Einzelnen Beitrag anzeigen

Glados
(Gast)

n/a Beiträge
 
#20

AW: Kopieren-Animation in Painbox zeichnen

  Alt 5. Nov 2017, 19:43
Habe oben mal was rumprobiert. Der Edit-Inhalt soll den Maximalwert darstellen, wo sich dann alle anderen Striche dran anpassen sollen.

Hier noch ein Update
Delphi-Quellcode:
var
 val, Max: Integer;
begin
 val := RandomRange(25, 45);

 Max := StrToIntDef(Edit1.Text, PaintBox1.Height);
 if Max > PaintBox1.Height then
  val := (val * 100) div Max
 else
  Max := PaintBox1.Height;

 Caption := val.ToString;

 iNewPos.X := iNewPos.X;
 iNewPos.Y := bmp.Height - val;

 bmp.Canvas.Pen.Color := clBlack;
 bmp.Canvas.Brush.Color := clBlack;
 bmp.Canvas.MoveTo(iNewPos.X, iNewPos.Y);
 bmp.Canvas.LineTo(iNewPos.X, bmp.Height);

 if iNewPos.X > 0 then
  begin
   bmp.Canvas.Pen.Color := clRed;
   bmp.Canvas.MoveTo(iOldPos.X, iOldPos.Y);
   bmp.Canvas.LineTo(iNewPos.X, iNewPos.Y);
  end;

 iOldPos.X := iNewPos.X;
 iOldPos.Y := bmp.Height - val;

 // horizontale Linie malen - ... jedenfalls die gescheiterte Idee
 bmp.Canvas.Brush.Color := clGreen;
 bmp.Canvas.MoveTo(0, iNewPos.Y);
 bmp.Canvas.LineTo(bmp.Width, iNewPos.Y);

 PaintBox1.Repaint;

 Inc(iNewPos.X, 5);
 if iNewPos.X >= PaintBox1.Width then
  begin
   Dec(iPosXBmp, 5);
   bmp.Width := bmp.Width + 5;
  end;
Das skalieren funktioniert so nun recht gut. Die Zahl im Edit ist immer das Maximum was es gegeben hat und daran passt sich der Rest dann an.

Nur habe ich jetzt ein neues Problem. Meine horizontale Linie die ich versuche zu malen wird natürlich immer und immer neu gezeichnet.
Meine Anfänger-Idee wäre jetzt, einfach ein TShape dafür zu nutzen was immer umpositioniert wird.

Geändert von Glados ( 5. Nov 2017 um 20:01 Uhr)
  Mit Zitat antworten Zitat