Entwickler-Ecke

Multimedia / Grafik - Rechteck wird nicht gezeichnet!


dot - Sa 30.06.12 19:28
Titel: Rechteck wird nicht gezeichnet!
Hallo,

ich will einfach ein Rechteck auf meiner Form zeichnen aber irgendwie klappt das nicht folgenden Code hab ich geschrieben:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TMainForm.FormCreate(Sender: TObject);
var
  pic : TBitmap;
begin
  pic := TBitmap.Create;
  pic.Height := 100;
  pic.Width := 100;
  pic.Canvas.Brush.Color := clRed;
  pic.Canvas.FillRect(Rect(00, pic.Width, pic.Height));
  MainForm.Canvas.Draw(0, (MainForm.Width div 2) - (MainForm.Height div 2), pic);
end

Ich bin leider noch ziemlich unerfahren mit Delphi, hoffe Ihr könnt mir weiterhelfen!
Danke in voraus!

mfg dot


Mathematiker - Sa 30.06.12 19:50

Hallo, :welcome:
ich sehe mehrere Probleme:
1. Während das Formular erzeugt wird (Create) kannst du nicht zeichnen. Ebenso nicht in der Methode Activate.
Möchstest Du, dass nach dem Start das Rechteck sichtbar wird, dann zeichne in der OnPaint-Methode des Formulars.
Ich verwende zwar lieber eine Paintbox, aber am Anfang geht auch das Formular selbst.
2. Bei

Delphi-Quelltext
1:
MainForm.Canvas.Draw(0, (MainForm.Width div 2) - (MainForm.Height div 2), pic);                    

verstehe ich die y-Koordinate nicht. Wo soll es denn hingezeichnet werden? Wie groß ist denn Dein Formular?
Warum verwendest Du Fillrect und nicht Rectangle? z.B.

Delphi-Quelltext
1:
2:
pic.canvas.brush.color:=clred;
pic.canvas.rectangle(0,0,100,100);

3. Wenn Du das Bitmap pic mit TBitmap.create herstellst, musst Du es am Ende auch mit pic.free löschen.
Beste Größe
Mathematiker


jaenicke - Sa 30.06.12 20:37

Und wieder einmal gibt es doppelte Antworten und dementsprechend doppelten Aufwand für die Antwortenden...
Crosspost: http://www.delphipraxis.net/169125-rechteck-wird-nicht-angezeigt.html

Was das Thema angeht, da findest du hier ein Beispiel:
http://www.michael-puff.de/Programmierung/Delphi/Code-Snippets/OffScreenBitmap.shtml