Das Problem mit der nPage bei Scrollbar
-
Hallöchen,
ich hoffe ich falle euch bei der Menge meiner Probleme nicht allzuseher zur Last. Folgendes ist es diesmal:
Ich habe eine Scrollbar bzw. ein Fenster welches eine horizontale Scrollbar hat. Ich benutze diese, um ein Bitmap, welche ich auf das Fenster zeichne, zu scrollen. Dieses Bitmap ist 512 Pixel breit, der Sichtbare Bereich ist 324 Pixel breit, daher setze ich den Scrollbereich auf 0 bis 188 (Also Pixelweises Scrollen). Dies soll bewirken, dass ich ganz links gescrollt das Bitmap links am Rand beginnent habe und ganz rechts gescrollt das Bitmap Ende am Ende des Fensters habe. Also im Klartext, das Bitmap soll durchgescrollt werden.
Dabei ist nun das Problem, die richtige Größe für die Scrollbox (Thumbbox) zu finden. Diese Größe stellt ja folgendes Verhältnis dar:Sichtbarer Bereich Scrollbox-breite ------------------- = ------------------ Gesamtbereich Scrollbar-breiteDas würde bedeuten, bei halber Sichtweite zum Gesamtbereich müsste die Scrollbox die Hälfe der Scrollbar-Breite einnehmen.
Setze ich allerdings meine Werte oben in die Formel ein, so erhalte ich den Wert 205, was ja die Größe des scrollbaren Bereiches (188) übersteigt und demnach unmöglich ist.In einem WinAPI Buch fand ich diese Formel etwas abgeändert:
Sichtbarer Bereich Scrollbox-breite ------------------- = ------------------ Gesamtbereich ScrollRangeDabei würde dann 118 herauskommen, was eine durchaus realistische Zahl bedeutet.
Die Scrollbox nimmt nun auch ein korrektes Verhältnis zur Größe der Scrolleiste ein. Sie ist größer als die Hälfte der Scrolleiste, was das Verhältnis Sichtbereich zu Gesamtbereich widerspiegelt. (Gesamtbild ist 1,5 mal so groß wie Sichtbereich)Das Problem ist nun, dass die Scrollweite (also der Scrollrange) auch durch die Größe der Scrollbox beeinflusst wird. Wir haben also plötzlich keinen Scrollbereich von 188 mehr sondern nurnoch 188 - 118 (Scrollbox-Breite) = 70. Somit verschiebt sich das Bild beim Scrollen nicht mehr korrekt und man kann nicht mehr vollständig die 188 Pixel scrollen.
Um das auszugleichen, denk ich mir so einfach, addier ich mal die Scrollbox-Breite (118) zu dem maximalen Scrollbereich hinzu, dann kann ich wieder die vollen 188 Pixel scrollen und sehe wieder alles. Das ist auch erstmal so richtig, es geht wieder voll zu scrollen. Allerdings ist durch den geänderten Scrollrange (jetzt 188 + 118) jetzt wieder das Verhältnis der Scrollbox-Breite zur Scrollbar-Breite falsch. Die Scrollbox ist nun kleiner als halb so groß wie die Scrollbar breit ist, obwohl der sichtbare Ausschnitt größer als die Hälfte ist. Was bedeutet, die Scrollbox spiegelt nicht mehr das korrekte Verhältnis dar.
Ich hoffe mein Problem ist einigermaßen verständlich erklärt und auch, dass es hier kundige Menschen gibt die mir da Rat geben können, was zu ändern ist.mfg.
Ynnus
-
Weiß nicht, ob ich das jetzt aus deinem Text richtig abgeleitet habe, aber setze doch einfach den Scroll-Bereich auf 512 Pixel und die Scrollbox-Breite auf 324 Pixel

-
Wow, es ist doch immer wieder verwunderlich, wie du da ganz einfach die Lösung parat hast, ohne scheinbar lange nachzudenken. Und es klappt sogar noch.
Gibt es dafür eine Formel um diese Thumbbox-Größe für alle weiteren Scrollbars zu errechnen oder gilt allgemein, Scrollbereich = volle Größe, Thumbgröße = Sichtbereich?
-
Ynnus schrieb:
Gibt es dafür eine Formel um diese Thumbbox-Größe für alle weiteren Scrollbars zu errechnen oder gilt allgemein, Scrollbereich = volle Größe, Thumbgröße = Sichtbereich?
Sollte dann eigentlich immer so funktionieren
