Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Canvas.TextOut oder Alternative (https://www.delphipraxis.net/103231-canvas-textout-oder-alternative.html)

langer hans 12. Nov 2007 18:25


Canvas.TextOut oder Alternative
 
Hallo!

Ich zeichne in folgender unit ein Koordinatensystem und dann Zeitwerte mit Canvas.lineto.
Zetzt will ich die einzelnen Werte beschriften mit den aus einer Listbox ausgelesen Werten.
Canvas.TextOut sorgt aber für sprünge im Graphen....
Hat vllt. jemand eine andere Möglichkeit für die Beschriftung?

Delphi-Quellcode:
//...
procedure TGraph.zeichnen;
var i,x:integer;
begin
formcreate(graph);
x:=120;
canvas.MoveTo(20,480);
for i:=0 to Zeiten.ListBox1.Items.Count-1 do
begin
canvas.LineTo(x,500+(-1*(strtoint(Zeiten.ListBox1.Items.Strings[i]))));
//canvas.TextOut(x,strtoint(Zeiten.ListBox1.Items.Strings[i]),inttostr(500-canvas.PenPos.Y));
x:=x+100;
end;
end;

procedure TGraph.FormCreate(Sender: TObject);
begin
with canvas do
begin
//y Achse
MoveTo(20,480);
lineto(20,20);
lineto(10,30);
moveto(20,20);
lineto(30,30);
//x Achse
MoveTo(20,480);
lineto(980,480);
lineto(970,470);
moveto(980,480);
lineto(970,490);
end;
end;
P.S.: Ich weiss, dass das mit der formcreate nicht so toll ist, wird auch noch geändert. ;)

MfG

Muetze1 12. Nov 2007 18:49

Re: Canvas.TextOut oder Alternative
 
Was bedeutet für dich denn "Sprünge im Graphen"? Was für Sprünge? Oder meinst du den Effekt, dass der Text die Brush.Color als Hintergrundfarbe nutzt? Wenn ja, dann setze vorher Brush.Style auf bsClear.

langer hans 12. Nov 2007 18:54

Re: Canvas.TextOut oder Alternative
 
Hat sich erledigt!
Ich musste nur den Pen zurücksetzen

Delphi-Quellcode:
for i:=0 to Zeiten.ListBox1.Items.Count-1 do
begin
canvas.LineTo(x,500+(-1*(strtoint(Zeiten.ListBox1.Items.Strings[i]))));
canvas.TextOut(x,490-(strtoint(Zeiten.ListBox1.Items.Strings[i])),inttostr(500-canvas.PenPos.Y));
canvas.MoveTo(x,500+(-1*(strtoint(Zeiten.ListBox1.Items.Strings[i]))));
x:=x+100;
end;
Danke trotzdem

MfG


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz