读书人

关于PolyPolyline的施用

发布时间: 2012-07-29 15:26:14 作者: rapoo

关于PolyPolyline的使用
//为什么这样绘制不出东西
procedure TForm1.btn28Click(Sender: TObject);
var
ps: array of TPoint;
pn:array of Integer;
begin
{组1:}
SetLength(ps, 10);
ps[0].X := 50;
ps[0].Y := 50;
ps[1].X := 100;
ps[1].Y := 50;
ps[2].X := 125;
ps[2].Y := 75;
ps[3].X := 100;
ps[3].Y := 100;
ps[4].X := 50;
ps[4].Y := 100;
ps[5].X := 25;
ps[5].Y := 75;
{组2:}
ps[6].X := 200;
ps[6].Y := 25;
ps[7].X := 300;
ps[7].Y := 25;
ps[8].X := 300;
ps[8].Y := 125;
ps[9].X := 200;
ps[9].Y := 125;

SetLength(pn, 2);
pn[0] := 6; {组1有6个顶点}
pn[1] := 4; {组2有4个顶点}

PolyPolyline(GetDC(0), ps, pn, 2);
end;

//改为如下静态数组就可以了???
procedure TForm1.btn28Click(Sender: TObject);
var
ps: array[0..9] of TPoint;
pn:array[0..1] of Integer;
begin
{组1:}
ps[0].X := 50;
ps[0].Y := 50;
ps[1].X := 100;
ps[1].Y := 50;
ps[2].X := 125;
ps[2].Y := 75;
ps[3].X := 100;
ps[3].Y := 100;
ps[4].X := 50;
ps[4].Y := 100;
ps[5].X := 25;
ps[5].Y := 75;
{组2:}
ps[6].X := 200;
ps[6].Y := 25;
ps[7].X := 300;
ps[7].Y := 25;
ps[8].X := 300;
ps[8].Y := 125;
ps[9].X := 200;
ps[9].Y := 125;

pn[0] := 6; {组1有6个顶点}
pn[1] := 4; {组2有4个顶点}

PolyPolyline(Canvas.Handle, ps, pn, 2);
end;


[解决办法]
你这两个的画布都不一样,第一GetDC(0)是屏幕,坐标都是屏幕上坐标

第二个Canvas是窗体的Canvas,坐标相对于窗体

读书人网 >.NET

热点推荐