读书人

有关判断点是否在某区域的有关问题

发布时间: 2013-04-20 19:43:01 作者: rapoo

有关判断点是否在某区域的问题
我想判断一个点是否在某区域,没有成功。那么,我就用一个很简单的程序试一下,还是不对,请大家帮助:

测试的小函数如下:
procedure TForm1.Button1Click(Sender: TObject);
var
p: array of TPoint;
rgn: HRGN;
begin
Setlength(p, 4);
p[0].X := 0; p[0].Y := 0;
p[1].X := 100; p[1].Y := 0;
p[2].X := 100; p[2].Y := 100;
p[3].X := 0; p[3].Y := 100;
rgn := CreatePolygonRGN(p, 4, ALTERNATE);//换成WINDING也一样
if PtInRegion(rgn, 50, 50) then edit1.Text := 'good'
else edit1.Text := 'bad';
end;
我试了一下 (500,50)这个点应该不在此区域,但返回也与(50,50)点一样。

按说,(50,50)这个点应该在这个区域内的,但没有不成功 点 区域
[解决办法]


procedure TForm1.Button2Click(Sender: TObject);
var
p: array of TPoint;
rgn: HRGN;
begin
Setlength(p, 4);
p[0].X := 0; p[0].Y := 0;
p[1].X := 100; p[1].Y := 0;
p[2].X := 100; p[2].Y := 100;
p[3].X := 0; p[3].Y := 100;
//注意下面这句,第一个参数要传p[0]
rgn := CreatePolygonRGN(p[0], 4, winding);//换成WINDING也一样
if PtInRegion(rgn, 50, 50) then edit1.Text := 'good'
else edit1.Text := 'bad';
end;

读书人网 >.NET

热点推荐