Eigene scrollbox bauen ?

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Eigene scrollbox bauen ?

Beitrag von pluto »

Hallo,
ich habe mir in der lezten nach einige gedanken zum thema scorll gemacht.
Aktuell zu meinem projekt Paint2:
ich habe eine große bmp im speicher z.b. 3000X300.
Davon sehe ich nur einen ausschnitt z.b. 400X400 !
um die jeweilige scrollbalken länge und breite zu berechnen muss ich nur noch 3000/400 rechnen und diesen wert dem scrollalken abziehen(nicht war?)

damit hätte ich die größe !
jetzt werden die scrollbalken bewegt, intern wird eine trect bewegt und zwar so:
ich habe meine scrollbalke die ich verschiebe die scrollbalken sind einfach nur 2 trect variablen wovon ich eine evlt. verschieben kann.
und nun wollte ich gerne TRect.top(bei der Y Scrolleiste) nehmen um die genaue position für das interne rect zu haben um anschließend den gewünschten bereich aus der bmp zu auf die paintbox kopieren.

soweit dürfte das kein problem sein.... es sei denn es stellt sich herraus das ich die neue Position des internen recht nicht berechnen kann !
(aber davon gehe ich aus das es so geht)

jetzt kommt das größe problem:
ich möchte ja auf der Paintbox objekte mit der maus verschieben.
Dazu dachte ich mir folgendes:
die scrollbalken werden einzeln als klasse defniert und haben eigenschaften.
beim verschieben eines obj muss ich jetzt zuzätlich die maus position prüfen ob sie zu nah am bildschirmrand ist(richtig?) um in die gewünschte richtung das interne rect zu bewegen und das dürfte warscheinlich etwas schwirk werden.....

ich hoffe ihr habt das prinzip verstanden !
habt ihr eine idee wie ich das andres lösen könnte das problem ?
oder verbesserungs vorschläge ?

achja in die interne große bmp wollte ich nur reinzeichnen wenn es der bentuzer auch irgenwie sieht !
und an dieser stelle sehe ich auch noch ein kleines problem:
wenn ich ein obj verschiebe möchte ich gerne das nur der sichtbare ausschnit neugezcihent wird im buffer und der rest soll so belieben wie der ist !
ich weiß im moment noch nicht ob das so geht wie ich es beschrieben habe.....
MFG
Michael Springwald

Antworten