Hallo zusammen,
ich zeichne in ein Canvas und möchte anschließend zoomen und den Zoomausschnitt verschieben können. Wie das prinzipiell erfolgen soll ist mir klar, ich habe auch schon eine Möglichkeit realisiert, bei der ich abhängig von der Zoomstufe alles in entsprechender Größe neu zeichne.
Nun bin ich aber auf eine weniger umständliche Variante gestoßen, da man ein Canvas ja auch direkt zoomen kann. Für den Zoom habe ich eine Funktion gefunden, welche ich nach einigem umschreiben auch für meine Zwecke nutzen konnte:
Delphi-Quelltext
1: 2: 3: 4: 5:
| begin SetMapMode(Canvas.Handle, MM_ISOTROPIC); SetWindowExtEx(Canvas.Handle, AZoomFactor, AZoomFactor, nil); SetViewportExtEx(Canvas.Handle, 10, 10, nil); end; |
Jetzt müsste ich ja eigentlich nur noch die Position des betrachteten Bildausschnitts verschieben, um mein Ziel zu erreichen. Aber wie stelle ich das an? Das einzige, was ich dazu gefunden habe war
Delphi-Quelltext
Das hat aber nicht funktioniert (mit "nicht funktioniert" meine ich, dass keine Fehlermeldung o.Ä. kam, aber auch der gewünschte Effekt ausblieb). Welchen Befehl kann ich dafür nutzen? (Ich denke, die Frage kann auch ohne meinen eigenen Code geklärt werden, wenn jmd anderer Meinung ist, kann ich den aber jederzeit noch posten).
Vielen Dank schonmal
benner
Moderiert von
Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Do 16.10.2008 um 13:02