AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi FillRect funktioniert nicht
Thema durchsuchen
Ansicht
Themen-Optionen

FillRect funktioniert nicht

Ein Thema von Nonsense · begonnen am 4. Nov 2003 · letzter Beitrag vom 4. Nov 2003
Antwort Antwort
Benutzerbild von Nonsense
Nonsense

Registriert seit: 23. Nov 2002
389 Beiträge
 
Delphi 5 Standard
 
#1

FillRect funktioniert nicht

  Alt 4. Nov 2003, 18:13
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!
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#2

Re: FillRect funktioniert nicht

  Alt 4. Nov 2003, 18:18
Wenn Background ein TBitmap ist, überprüfe mal ob du ihm vor dem Aufruf von FillRect eine Größe zugewiesen hast.
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  Mit Zitat antworten Zitat
Benutzerbild von Nonsense
Nonsense

Registriert seit: 23. Nov 2002
389 Beiträge
 
Delphi 5 Standard
 
#3

Re: FillRect funktioniert nicht

  Alt 4. Nov 2003, 18:21
Ja, natürlich!
Delphi-Quellcode:
procedure TGame.FormCreate(Sender: TObject);
begin
 Background := TBitmap.Create;

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

 DrawScreen;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Nonsense
Nonsense

Registriert seit: 23. Nov 2002
389 Beiträge
 
Delphi 5 Standard
 
#4

Re: FillRect funktioniert nicht

  Alt 4. Nov 2003, 18:23
Habe es auch mit
  FillRect(Rect(0, 0, Game.ClientHeight, Game.ClientWidth)); probiert, klappt aber immer noch nicht.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

Re: FillRect funktioniert nicht

  Alt 4. Nov 2003, 18:42
Ist auch der richtige Pinsel zugewiesen?
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);
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Nonsense
Nonsense

Registriert seit: 23. Nov 2002
389 Beiträge
 
Delphi 5 Standard
 
#6

Re: FillRect funktioniert nicht

  Alt 4. Nov 2003, 18:45
Danke @himitsu, es klappt aber beides nicht. Mein Formular bleibt leer
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

Re: FillRect funktioniert nicht

  Alt 4. Nov 2003, 18:48
wird DrawScreen nur in OnCreate aufgerufen?
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Nonsense
Nonsense

Registriert seit: 23. Nov 2002
389 Beiträge
 
Delphi 5 Standard
 
#8

Re: FillRect funktioniert nicht

  Alt 4. Nov 2003, 18:50
Mhh, der Gedanke kam mir auch gerade. Eigentlich müsste es ja in's OnPaint...

Danke trotzdem nochmal!

(ich zieh jetzt lieber den Kopf ein und renne weg... )
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#9

Re: FillRect funktioniert nicht

  Alt 4. Nov 2003, 18:52
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;
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:50 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