Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi FillRect funktioniert nicht (https://www.delphipraxis.net/11335-fillrect-funktioniert-nicht.html)

Nonsense 4. Nov 2003 17:13


FillRect funktioniert nicht
 
Hallo,
ich möchte gerne auf die Canvas vom Formular zeichnen, klappt aber nicht. Ich kriege keinen Fehler, er zeichnet einfach nicht. Wenn ich mit dem gleichen Code auf eine PaintBox male, klappt es. Weiß jemand warum? Es liegt 100% am FillRect, ich weiß nicht, was ich dort an Werten übergeben soll.
Delphi-Quellcode:
procedure DrawScreen;
begin
 with Background.Canvas do
 begin
  Brush.Color := RGB(0, 0, 0);
  FillRect(Game.ClientRect);
 end;

 Game.Canvas.Draw(0, 0, Background);
end;
Danke!

Niko 4. Nov 2003 17:18

Re: FillRect funktioniert nicht
 
Wenn Background ein TBitmap ist, überprüfe mal ob du ihm vor dem Aufruf von FillRect eine Größe zugewiesen hast.

Nonsense 4. Nov 2003 17:21

Re: FillRect funktioniert nicht
 
Ja, natürlich!
Delphi-Quellcode:
procedure TGame.FormCreate(Sender: TObject);
begin
 Background := TBitmap.Create;

 Background.Height := Game.ClientHeight;
 Background.Width := Game.ClientWidth;

 DrawScreen;
end;

Nonsense 4. Nov 2003 17:23

Re: FillRect funktioniert nicht
 
Habe es auch mit
Delphi-Quellcode:
  FillRect(Rect(0, 0, Game.ClientHeight, Game.ClientWidth));
probiert, klappt aber immer noch nicht.

himitsu 4. Nov 2003 17:42

Re: FillRect funktioniert nicht
 
Ist auch der richtige Pinsel zugewiesen?
Delphi-Quellcode:
Background.Canvas.Brush.Style := bsSolid;

Ansonsten ist hier noch was zum versuchen:
Delphi-Quellcode:
Background.Canvas.Brush.Style := bsSolid;
Background.Canvas.Brush.Color := RGB(0, 0, 0);
Background.Canvas.FillRect(Game.ClientRect);

{ oder }

{Background.Canvas.Brush.Style := bsSolid;}
Background.Canvas.Pen.Color := RGB(0, 0, 0);
Background.Canvas.Brush.Color := Canvas.Pen.Color;
Background.Canvas.Rectangle(0, 0, Game.Width, Game.Height);

Nonsense 4. Nov 2003 17:45

Re: FillRect funktioniert nicht
 
Danke @himitsu, es klappt aber beides nicht. Mein Formular bleibt leer :(

himitsu 4. Nov 2003 17:48

Re: FillRect funktioniert nicht
 
wird DrawScreen nur in OnCreate aufgerufen?

Nonsense 4. Nov 2003 17:50

Re: FillRect funktioniert nicht
 
Mhh, der Gedanke kam mir auch gerade. Eigentlich müsste es ja in's OnPaint... :wall:

Danke trotzdem nochmal!

(ich zieh jetzt lieber den Kopf ein und renne weg... :zwinker: )

himitsu 4. Nov 2003 17:52

Re: FillRect funktioniert nicht
 
Genau.

Delphi-Quellcode:
{Game / OnCreate}
Procedure TGame.FormCreate(Sender: TObject);
  Begin
    Background := TBitmap.Create;
    Background.Height := Game.ClientHeight;
    Background.Width := Game.ClientWidth;
  End;

{Game / OnPaint}
Procedure TForm1.FormPaint(Sender: TObject);
  Begin
    DrawScreen;
  End;

{Game / OnDestroy}
Procedure TGame.FormDestroy(Sender: TObject);
  Begin
    Background.Free;
  End;


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