读书人

delphi画图中出现多变形 画不出来poly

发布时间: 2012-02-13 17:20:26 作者: rapoo

delphi画图中出现多变形 画不出来polygon 感觉程序都没有错误呀
AssignFile(F,'e:\地图数据/绿地.MIF');
Reset(F); //只读打开
Readln(F,penwidth,pentype,pencolor);
Readln(F,siBrushPattern,lForeColor,lBackColor);
R:=round(pencolor/65536);
G:=round((pencolor-R*65536)/256);
B:=pencolor-R*65536-G*256;

R1:=round(lForeColor/65536);
G1:=round((lForeColor-R1*65536)/256);
B1:=lForeColor-R1*65536-G1*256;




while not Eof(F) do
begin
readln(F);
readln(F,points);
readln(F,xArray[0],yArray[0]);
x:=round((xArray[0]-mapleftx)*1000000*setcshx);
y:=round((yArray[0]-maprighty)*1000000*setcshy);

image1.Canvas.MoveTo(x,y);
{ readln(F,xArray[0],yArray[0]);
x:=round((xArray[0]-mapleftx)*1000000*setcshx);
y:=round((yArray[0]-maprighty)*1000000*setcshy);


xArray[0]:=116.88365;
yArray[0]:=36.64903;


x:=round((xArray[0]-mapleftx)*1000000*setcshx);
y:=round((yArray[0]-maprighty)*1000000*setcshy);
image1.Canvas.Ellipse((x-100),(y-100),(x+100),(y+100));
}


for i:=1 to points-1 do
begin
readln(F,xArray[i],yArray[i]);
x:=round((xArray[i]-mapleftx)*1000000*setcshx);
y:=round((yArray[i]-maprighty)*1000000*setcshy);

pointone[i].X:=x;
pointone[i].Y:=y;
// MyPoints[0]:=Point(200,100);


// image1.Canvas.LineTo(x,y);


end;
// pointone[0]:=pointone[points-1];
image1.Canvas.Pen.Color:=RGB(R,G,B);
image1.Canvas.Pen.Width:=penwidth;
image1.Canvas.Brush.Color:= RGB(R1,G1,B1);
image1.Canvas.Polygon(pointone);
readln(F);
readln(F);
readln(F);
{ for i:=0 to points-1 do
begin
// pointone[i]:=point(x,y);
pointone[i].X:=0;
pointone[i].Y:=0;
end; }
end;

CloseFile(F);


[解决办法]
既然能够看到线那就说明是你的代码有问题,这样看一下你的image加载的是bmp么?如果是jpg的,换个bmp
另外用这个代码试一下,能不能画出填充多边形
const
pts: array[0..3] of TPoint = (
(x:10; y:40),
(x:46; y:120),
(x:82; y:40),
(x:46; y:10)
);
//----------------------------
procedure TForm1.Button1Click(Sender: TObject);
const
pts: array[0..3] of TPoint = (
(x:10; y:40),
(x:46; y:120),
(x:82; y:40),
(x:46; y:10)
);
begin
Canvas.Polygon(pts);
end;

读书人网 >.NET

热点推荐