gelöst - Trapez ausmalen

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Antworten
alex793
Beiträge: 5
Registriert: Di 11. Mär 2014, 11:03

gelöst - Trapez ausmalen

Beitrag von alex793 »

Hy leute.
mit dem folgenden quelltext wird ein trapez gezeichnet.
warum wird diese nicht ausgemalt?

with form1.image1.canvas do
begin
pen.color:=clblack;
brush.color:=clred;
brush.style:=bssolid;
moveto(Punkt1x,Punkt1y);
lineto(Punkt2x,Punkt2y);
lineto(punkt21x,punkt21y);
lineto(punkt11x,punkt11y);
lineto(punkt1x,punkt1y);
end;


das hier funktioniert ja
brush.color:=clwhite;
rectangle(-1,-1,image1.width+1,image1.height+1);
Zuletzt geändert von alex793 am Do 8. Mai 2014, 04:36, insgesamt 1-mal geändert.
Windows 8, 64 bit, Lazarus 1.4

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Trapez ausmalen

Beitrag von Michl »

Weil Du einige Linien malst (wie z.B. mit einem Stift und einem Lineal auf einem Blatt Papier - ist ja dann auch nicht ausgemalt) und kein Polygon! Versuchs mal eher so:

Code: Alles auswählen

var
  P: Array of TPoint;
begin
  SetLength(P,3);
  P[0].x:=100;
  P[0].y:=100;
  P[1].x:=200;
  P[1].y:=100;
  P[2].x:=150;
  P[2].y:=150;
  Canvas.Polygon(P);
end;

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Trapez ausmalen

Beitrag von theo »

@Michl: Kleine Anmerkung. Ist Richtig, aber man kann es mMn übersichtlicher schreiben:

Code: Alles auswählen

  SetLength(P,3);
  P[0]:=Point(100,100);
  P[1]:=Point(200,100);
  P[2]:=Point(150,150);
  Canvas.Polygon(P);       


So kann ich das leichter interpretieren.

Oder gleich so, dann braucht es auch kein SetLength

Code: Alles auswählen

var  P: array[0..2] of TPoint = ((X:100;Y:100),(X:200;Y:100),(X:150;Y:150));      

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Trapez ausmalen

Beitrag von Michl »

:) Da gebe ich Dir vollkommen recht

Code: Alles auswählen

  P[0]:=Point(100,100);
  P[1]:=Point(200,100);
  P[2]:=Point(150,150)
liest sich wirklich viel schöner!

Find ich gut, wenn man auf eine gute Formatierung / gute Lesbarkeit achtet. Bei manchem Quellcode oder Postings, was man hier und da zu lesen bekommt, rollen sich ja einem die Fußnägel auf...

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

alex793
Beiträge: 5
Registriert: Di 11. Mär 2014, 11:03

Re: Trapez ausmalen

Beitrag von alex793 »

super sache!
hat gut geklappt :D
Windows 8, 64 bit, Lazarus 1.4

Antworten