PolyPolyLine

PolyPolyline(
DC: HDC; {设备环境句柄}
var Points; {点数组}
var nPoints;{数组, 数组元素是每个组的顶点数}
p4: Integer {分组数, 也就是 nPoints 的元素数}
): BOOL;
--------------------------------------------------------------------------------

//举例:
procedure TForm1.FormPaint(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;

描述:
有10个点,分两组话,前6个一组,后4个一组。

说明2
BOOL PolyPolyline(
HDC hdc, // handle to device context
CONST POINT *lppt, // array of points
CONST DWORD *lpdwPolyPoints, // array of values
DWORD cCount // number of entries in values array
);

 

lpdwPolyPoints表示了如何对lppt中的点进行分组。每一组构成一个折线。

 

比如在lppt中指定了14个点,此时 lpdwPolyPoints 可以是 [2, 3, 5, 4], cCount为4, 表
示这14个点被分作4组,即前2个点为一组,接下来3个点为一组,依次类推,共4组。lpdwPo
lyPoints中每个值都要大于等于2,避免出现孤立的点。

 

绘制时,按照分组分别将各点用线段连接起来。组和组不会自动用线段连接起来。这个函数
的功能可以认为是“批量绘制折线”。通过设置正确的分组和坐标,可以实现很多效果:比
如一次绘制n个多边形等。

posted on 2014-09-19 22:49  云之灵  阅读(1029)  评论(0编辑  收藏  举报