Entwickler-Ecke
Multimedia / Grafik - Canvas Zoom + Bildausschnitt verschieben
benner - Do 16.10.08 11:44
Titel: Canvas Zoom + Bildausschnitt verschieben
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
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
Logikmensch - Fr 17.10.08 06:04
Hallo! :wave:
versuch mal BitBlt oder StretchBlt. Damit kannst Du Bitmaps verschieben.
Ich würde empfehlen, den zu kopierenden Bildausschnitt herauszulösen in eine Bitmap und dann mit BitBlt bzw. StretchBlt das Bild an die zielposition zu kopieren.
benner - Fr 17.10.08 14:06
Vielen Dank, das hilft mir schonmal weiter. Werde mich erstmal mit diesem Ansatz beschäftigen.
Grüße,
benner
benner - Di 21.10.08 15:38
Nachdem ich noch ein bisschen rumgetüftelt habe, wollte ich nur noch mitteilen, dass das Problem (vorerst) zu meiner Zufriedenheit gelöst ist. Vielen Dank nochmal. =)
Grüße,
benner
Delete - Di 21.10.08 17:38
Wieso wurde das Problem nur "vorerst" gelöst?Erläutere mal!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!