Einzelnen Beitrag anzeigen

Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#1

Verschiebung eines Graphen

  Alt 16. Mär 2008, 19:59
Hi,

wenn der Graph den Fensterrand erreicht, soll er verschoben werden, damit man die aktuellen Werte noch sehen kann.
Delphi-Quellcode:
GrpDX := 0;

...

with Grp.Canvas do // Grp = Graph = TBitmap
begin
  MoveTo(GrpX , GrpY);
  LineTo(GrpX+20, ...));
  GrpX := GrpX+20;
  GrpY := ...;

  if GrpX > frmMain.Width then
    GrpDX := GrpDX-20;
end;
Canvas.Draw(GrpDX, 16, Grp);
In dem Code wird erstmal mit MoveTo Punkt1 festgelegt und mit LineTo die nötige Verbindungslinie zu Punkt2 gezeichnet. GrpX ist der aktuelle X-Wert, GrpY der aktuelle Y-Wert. Also wird GrpX immer um 20 erhöht und auf der Basis des neuen GrpX wieder der nächste Schritt berechnet. Um es zu vereinfachen habe ich die Berechnung von GrpY in dem Codeausschnitt weggelassen.
Nun wird mit der If geschaut, ob der nächste X-Wert schon zu weit draußen liegt. Wenn ja, wird GrpDX um 20 verkleinert. GrpDX ist der X-Wert welcher von Canvas.Draw genutzt wird um das Bitmap Grp zu zeichnen. Ich will also einfach Grp weiter links zeichnen um rechts mehr Platz zu erhalten. Dies funktioniert nicht. Es wiederholt sich sobald der Graph den Fensterrand erreicht hat der Graph immer wieder. Der rote Kasten auf dem Screenshot markiert den sich ständig wiederholenden Bereich.

Mein Fehler muss ein ganz simpler sein. Seht ihr ihn ?
Miniaturansicht angehängter Grafiken
graph_136.png  
  Mit Zitat antworten Zitat