Entwickler-Ecke
Multimedia / Grafik - Canvas verschieben und zoomen!?
Padz - Do 11.12.08 19:03
Titel: Canvas verschieben und zoomen!?
Hi,
ich arbeite derzeit (für die Schule) an einem Programm, welches Funktionen schreiben kann.
Dort arbeite ich mit der "Image" Komponente.
Meine Frage ist, wie ich den dargestellten Bereich, zum einen verschieben und vergrößern kann.
Das Verschieben stell ich mir vor, dass man mit der Maus auf dem Bild klickt und gedrückt hält und den Bildausschnitt dann hin- und herschieben kann. Ist das mit Delphi möglich?
Das Zoomen, soll so laufen, dass ich mit der Maus einen rechteckigen Bereich auswähle und dieser dann automatisch gezoomt wird. Ich habe hier schon etwas über "Stretch" gelesen. Wie wende ich das an, denn einfach im Objectinspektor auf "True" klicken ist wohl nicht alles. ;)
Würde mich über Hilfe freuen.
Gruß
Padz
Fighter#1 - Do 11.12.08 19:09
Also du hast einen Funktionsplotter?
Ich glaube du solltest das anders lösen ;)
Was du möchtest ist ja nicht das Bild vergößern oderso, sondern einen anderen Ausschnitt zeichnen!
Also wenn du Zoomen möchtest möchtest du nichtmehr von x=-4 bis x=4 sondern nurnoch von -2 bis 2 das Schaubild sehen.
Somit zeichnest du das Schaubild im neuen Bereich einfach erneut!
Und mit dem Verschieben verhält es sich ähnlich (zB X von -6 bis 2 ... gleiche Distanz nur andre Position).
Unser Grafikfähiger Taschenrechner (TI 83+) Hat dafür 4 (bzw. 6) wichtige Variablen Xmin,Xmax (die die Begrenzung auf der X-Achse darstellen) und Ymin und Ymax(Begrenzung auf der Y-Achse) Solche Variablen solltest du in deiner Zeichenroutine auch nutzen!
Damit kannst du dir viel erleichtern =) !
MfG, Fighter#1
Padz - Do 11.12.08 19:27
Ja genau, dass wird ein Funktionsplotter, der auch schon funktioniert.
Ich denke ich habe verstanden was du meinst bzw. wie das gemacht wird.
Also sollte ich lieber zb zwei Edit Felder einfügen, wo man die X und Y Koordinaten eingibt und dieser dann dies zeichnet?
Und so mit der Maus markieren geht nicht/nicht so gut?
ace1905 - Do 11.12.08 20:33
mit dem verschieben solltest du dich mit OnMouseDown und OnMouseMove beschäftigen
das kannst du dann auf deinem image anwenden um die verschiebung zu realisieren ;)
Yogu - Do 11.12.08 20:49
Hallo,
setze im
OnMouseDown eine Variable des Typs
TPoint auf die übergebenen Mauskoordinaten (Parameter
X und
Y). Im
OnMouseMove ziehst du nun von den neuen Koordinaten die gespeicherten ab, addierst das zu
Xmin bzw.
Ymin und speicherst die Koordinaten wieder in der
TPoint-Variable:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| MousePos: TPoint; MouseDown: Boolean;
MousePoint := Point(X, Y); MouseDown := True
MouseDown := False;
var Diff: TPoint; Diff := Point(X-MousePos.X, Y-MousePos.Y); MousePos := Point(X, Y);
|
Soviel zur grafischen Verschiebung.
Padz - Do 11.12.08 20:58
Cool, danke!
Werde ich aufjedenfall ausprobieren, nur jetzt habe ich leider keine Zeit und ich werde mich natürlich melden, falls ich es geschafft habe, oder noch Probleme auftauchen. ;)
Gruß
Padz
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!