Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Frage zu Canvas Polygon


Blackheart666 - So 01.10.06 18:45
Titel: Frage zu Canvas Polygon
Hallo Leute !
Ich hab Mich noch nicht soviel mit Canvas beschäftigt und hätte dazu mal eine Frage.
Schwer zu erklären, Ich wollte in der Mitte ein auf die Spitze gestelltes Quadrat und den Rest damit es wieder Quadratisch ist mit Dreiecken auffüllen (Wie beim Diagonal Fliesen).
Hab jetzt mal angefangen das alles mit Dreiecken zu lösen und die Mittellinie im Quadrat überzeichnet.
Könnte man soetwas noch einfacher lösen.
Unten mal der Quelltext (angefangen) und ein Screenshot.
Blackmetal666

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
procedure TForm1.Button1Click(Sender: TObject);
var
  P : array [0..2of TPoint;
begin
  Canvas.Brush.Color := clred;
  Canvas.Pen.Width   := 2;
  Canvas.Pen.Color   := clBlack;
  P[0] := Point(180,50);
  P[1] := Point(50,180);
  P[2] := Point(310,180);
  Canvas.Polygon(P);

  P[0] := Point(180,310);
  P[1] := Point(50,180);
  P[2] := Point(310,180);
  Canvas.Polygon(P);

  P[0] := Point(440,310);
  P[1] := Point(310,180);
  P[2] := Point(180,310);
  Canvas.Polygon(P);

  Form1.Canvas.Pen.Color:= clred;
  Form1.Canvas.MoveTo(308,180);
  Form1.Canvas.LineTo(53,180);
end;


Lannes - So 15.10.06 14:24
Titel: Re: Frage zu Canvas Polygon
Hallo,
user profile iconBlackheart666 hat folgendes geschrieben:
...Ich wollte in der Mitte ein auf die Spitze gestelltes Quadrat und den Rest damit es wieder Quadratisch ist mit Dreiecken auffüllen...
dann reicht doch ein Quadrat auf das Du das auf die Spitze gestellte Quadrat zeichnest.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var
  P : array [0..3of TPoint;
begin
  Canvas.Brush.Color := clred;
  Canvas.Pen.Width   := 2;
  Canvas.Pen.Color   := clBlack;
  Canvas.Rectangle(50,50,310+Canvas.Pen.Width,310+Canvas.Pen.Width);
  P[0] := Point(180,50);
  P[1] := Point(50,180);
  P[2] := Point(180,310);
  P[3] := Point(310,180);
  Canvas.Polygon(P);


Blackheart666 - So 22.10.06 20:15

Danke Lannes, manchmal denkt man aber auch kompliziert.
Blackheart666