Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Andorra 2d Canvas.Brush.Color (https://www.delphipraxis.net/160655-andorra-2d-canvas-brush-color.html)

Noobmaster 24. Mai 2011 15:51

Andorra 2d Canvas.Brush.Color
 
Hallo!

Das Programm soll verschiedene Rechtecke zeichnen. Momentan nur graue "Blöcke", deren Farbe ich schon auf grau gesetzt habe.

Delphi-Quellcode:
 
procedure ZeichneLevel(var Zeichenflaeche : TAddraw; Verschiebung : Integer);
var Rechteck : TRechteck;
begin
     for i := Low(Block) to High(Block) do
     begin
          if Block[i] <> nil then
          begin
               Block[i].SetzePos(Block[i].x + Verschiebung,Block[i].y);

               //Blockzeichnung vorbereiten:
               with Zeichenflaeche.Canvas do
               begin
                    Pen.Color.a := Block[i].Farbe.a;
                    Pen.Color.b := Block[i].Farbe.b;
                    Pen.Color.g := Block[i].Farbe.g;
                    Pen.Color.r := Block[i].Farbe.r;
                    Brush.Color := Pen.Color;
               end;

               //Blöcke zeichnen:
               if Block[i] is TRechteck then
               begin
                    Rechteck := TRechteck(Block[i]);
                    Zeichenflaeche.Canvas.Rectangle(Rechteck.x,Rechteck.y,Rechteck.x+Rechteck.a,Rechteck.y-Rechteck.b);
               end;

               //Ohne diese Zeile wird nichts gezeichnet:
               Zeichenflaeche.Canvas.Release();
          end;
     end;
end;
Die Prozedur wird noch mit Verschiebung = 0 ausgeführt.
Das Programm zeichnet aber nur grau umrandete Rechtecke, es sollen aber auch grau ausgefüllte sein. Liegt das an der Brush.Color oder muss ich sonst noch was beachten?
Warum funktioniert aber die Zuweisung der Pen.Color?

Danke schonmal für die Hilfe!

DeddyH 24. Mai 2011 15:54

AW: Andorra 2d Canvas.Brush.Color
 
Farbe setzen alleine reicht nicht, Du musst schon noch zeichnen (Canvas.FillRect).

Noobmaster 24. Mai 2011 15:56

AW: Andorra 2d Canvas.Brush.Color
 
Die Prozedur gibt es bei Andorra aber nicht... und im Tutorial scheint der Aufruf einer solchen auch nicht notwendig.

DeddyH 24. Mai 2011 15:57

AW: Andorra 2d Canvas.Brush.Color
 
Dann nehme ich alles zurück, da ich das "Andorra" schlicht überlesen hatte.

igel457 24. Mai 2011 16:31

AW: Andorra 2d Canvas.Brush.Color
 
Ich denke das Problem ist, dass du die Blöcke "falsch herum" zeichnest, d.h. bei der letzten y-Koordinate ziehst du die Breite ab. Hierdurch culltdie Grafikkarte die Vertices des Rechtecks weg.

Als Lösung kannst du entweder die Rechtecke "richtig herum" zeichnen oder das Culling ausschalten (über die TAdDraw.Options, siehe http://andorracommons.sourceforge.ne...es.TAd2dOption)

Noobmaster 24. Mai 2011 16:41

AW: Andorra 2d Canvas.Brush.Color
 
Danke, wie immer die richtige Antwort :-)
An sowas denkt man als Hobbyprogrammierer aber auch nicht xD


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