Autor Beitrag
Padz
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Do 11.12.08 19:03 
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 787

Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
BeitragVerfasst: 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

_________________
Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
Padz Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 73



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: 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:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
// Formular-Variable unter private
MousePos: TPoint;
MouseDown: Boolean;

// OnMouseDown
MousePoint := Point(X, Y);
MouseDown := True

// OnMouseUp
MouseDown := False;

// OnMouseMove
var Diff: TPoint;
Diff := Point(X-MousePos.X, Y-MousePos.Y);
MousePos := Point(X, Y);

{ Diff beinhaltet nun die Verschiebung, die du anwenden musst }

Soviel zur grafischen Verschiebung.
Padz Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: 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