nach Jahren mit VB6 bin ich durch Zufall auf PB gestossen u. bin begeistert von der Geschwindigkeit und Kompaktheit des produzierten Codes.
Ich habe in VB6 ein Programm geschrieben zur automatischen Fokussierung eines Teleskops. Es steuert im Wesentlichen
einen Schrittmotor über USB und eine DSLR deren Bilder ich anzeige und auswerte.
Bei der Portierung des Programms auf PB bin ich auf einige Hindernisse gestossen:
Ich möchte ein Bild der Kamera (ca. 3400*2500 .jpg) laden und (verkleinert) darstellen.: Kein Problem!
Dann Bereiche des Bildes per Lupe in einem (anderen) Image-Gadget darstellen. Auch kein Problem , siehe Code:
Code: Alles auswählen
; Quellbild skaliert in den Gadget Massen (verkleinert) anzeigen
LoadImage(0,filename$))
ResizeImage(0, GadgetWidth(#quelle)-4, GadgetHeight(#quelle)-4)
SetGadgetState(#quelle, ImageID(0))
;dann einen Ausschnitt des Quellbildes (Mausposition) in einem anderen
;ImageGadget vergroessert anzeigen
hdcQuelle.l=GetDC_(GadgetID(#quelle))
hdcZiel.l=GetDC_(GadgetID(#ziel))
StretchBlt_(hdcZiel,0,0,GadgetWidth(#ziel),GadgetHeight(#ziel),hdcQuelle ,mousex,mousey,50,50,#SRCCOPY)
In VB6 war das einfach. Hier habe ich ein Dummy-Picture Objekt in Ursprungsgrösse des Bildes (unsichtbar, visible=False) als Quelle verwendet.
Das geht offensichtlich in PB nicht !? Hier muss das ImageGadget sichtbar im Fenster sein!?
Wie kann ich das lösen:
Ich dachte an:
CopyImage(0,1) ; Das Bild in den Speicher kopieren?
...?
Wie komme ich dann an "hdcQuelle" für die API-Funktion stretchblt_ des Bildes in Originalgrösse?
Kann man (Image)-Gadgets auf Visible=False setzen? Wenn ja, wie?
Oder gibt es einen eleganteren Weg?
Fragen über Fragen!
Für eine hilfreiche Unterstützung wäre ich sehr dankbar!
VG
Udo