...
pl. egy házikót kirajzoló kód ...
Delphiben működik, Lazarusban hibajelzés ugyan nincs, de nem színezi ki a tetőt:
with canvas do begin
//alap
brush.color:=clblue;
rectangle(0,0,clientwidth,y(650));
brush.color:=clgreen;
rectangle(0,y(650),clientwidth,clientheight);
//fal
brush.color:=clwhite;
rectangle(x(150),y(450),x(350),y(650));
rectangle(x(350),y(450),x(700),y(650));
//ajtó,ablak
rectangle(x(200),y(500),x(300),y(600));
rectangle(x(550),y(500),x(650),y(600));
rectangle(x(400),y(500),x(500),y(650));
//homlokzat,tető
moveto(x(700),y(450));
lineto(x(600),y(300));
lineto(x(250),y(300));
lineto(x(150),y(450));
moveto(x(250),y(300));
lineto(x(350),y(450));
brush.color:=clgray;
floodfill(x(250),y(440),clblack,fsborder);
brush.color:=clred;
floodfill(x(500),y(440),clblack,fsborder);
brush.color:=clblack;
ellipse(x(230),y(370),x(270),y(410));
//kémény
brush.color:=clred;
rectangle(x(400),y(200),x(450),y(300));
end;
Lazarusban csak így működik:
with canvas do begin
//alap
brush.color:=clblue;
rectangle(0,0,clientwidth,y(650));
brush.color:=clgreen;
rectangle(0,y(650),clientwidth,clientheight);
//fal
brush.color:=clwhite;
rectangle(x(150),y(450),x(350),y(650));
rectangle(x(350),y(450),x(700),y(650));
//ajtó,ablak
rectangle(x(200),y(500),x(300),y(600));
rectangle(x(550),y(500),x(650),y(600));
rectangle(x(400),y(500),x(500),y(650));
//tetõ
Brush.Color := clMaroon;
Polygon([Point(x(700),y(450)), Point(x(600),y(300)), Point(x(250),y(300)), Point(x(350),y(450))]);
//homlokzat
Brush.Color := clgray;
Polygon([Point(x(250),y(300)), Point(x(350),y(450)), Point(x(150),y(450))]);
brush.color:=clblack;
ellipse(x(230),y(370),x(270),y(410));
//kémény
brush.color:=clred;
rectangle(x(400),y(200),x(450),y(300));
end;
Itt a polygonra való átírás nem nyűg, de ha a sokszög csúcsai pl. metszéspontok, vagy paraméterezettek, illetve számítottak, akkor már nagyon is nyűg.
Mondjuk ez alapvetően akkor érdekes, ha más forrásból akarok Lazarusba átemelni és kipróbálni egy programot. Új proginál nyilván magam oldom meg.