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 TPaintBox Problem (https://www.delphipraxis.net/30273-tpaintbox-problem.html)

glunzl 22. Sep 2004 20:14


TPaintBox Problem
 
Hallo Leutz!

Ich doktor jetzt sein ein ppar Std an einer Paintbox rum, auf die ich mit MovoTo und LineTo etwas zeichnen möchte.
Dazu nutze ich folg. Code:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
PaintBox1.Color := clblack;
PaintBox1.Width := Form1.ClientWidth ;
PaintBox1.Height := Form1.ClientHeight ;
end;

procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
with PaintBox1 do
begin
  canvas.MoveTo(0,0);
  canvas.LineTo(PaintBox1.ClientHeight, PaintBox1.ClientWidth);
end ;
1. Mit der Prozdeur TForm1.FormCreate sollte die PaintBox auf Form Größe kommen. Oder? :gruebel:

2. Ich bekomme aber nur einen Strich von oben links (ist ok) bis ca. zur Mitte, ganz unten. Wieso? :gruebel:

3. Warum wird durch PaintBox1.Color := clBlack der PaintBox-Hintergrund nicht schwarz??? :gruebel:

Ich find den Fehler nicht. Hilft mir mal bitte jemand auf die Sprünge?

Danke!

alcaeus 22. Sep 2004 20:19

Re: TPaintBox Problem
 
Hi glunzl,

zu 1: Ja, sollte die Paintbox eigentlich. Du könntest aber auch Align auf alClient setzen (zur Entwicklungszeit)

zu 2: bei LineTo wird zuerst x, dann y angegeben. Der richtige Aufruf wäre deshalb:
Delphi-Quellcode:
canvas.LineTo(PaintBox1.ClientWidth, PaintBox1.ClientHeight);
zu 3: du musst PaintBox1.Canvas.Brush.Color auf clBlack setzen, und anschließend mit FillRect ein gefülltes Rechteck zeichnen. Die DP-Suche sollte genug Ergebnisse finden.

Greetz
alcaeus

glunzl 24. Sep 2004 10:00

Re: TPaintBox Problem
 
Moin alcaeus!

Danke für Deinen Tipp ... Manchmal hat man einfach Tomaten auf den Augen...

Gruss
MG

Muetze1 24. Sep 2004 11:00

Re: TPaintBox Problem
 
Moin!

Vielleicht klappt es in der FormCreate so:

Code:
procedure TForm1.FormCreate(Sender: TObject);
begin
  PaintBox1.Canvas.Brush.Color := clblack;
  PaintBox1.Width := ClientWidth ;
  PaintBox1.Height := ClientHeight ;
end;
Weil die Form1 Instanzenvariable innerhalb der Klasse zu verwenden ist gefährlich und kein einzigen Sinn/Nutzen...

MfG
Muetze1


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:37 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