首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

PtInRect 判断点是否在一个区域,该如何解决

2012-02-11 
PtInRect 判断点是否在一个区域我的是这样设置:S.X : StrToInt(Sx.Text) //开始点XS.Y : StrToInt(Sy.T

PtInRect 判断点是否在一个区域
我的是这样设置: 

  S.X := StrToInt(Sx.Text); //开始点X
  S.Y := StrToInt(Sy.Text); //开始点Y  
  E.X := StrToInt(ex.Text); //终始点X
  E.Y := StrToInt(EY.Text); //终始点Y
  //定义一个TRect的LineR 
  LineR.Left := S.X;
  LineR.Top := S.Y;
  LineR.Right := E.X;
  LineR.Bottom := E.Y;
  //然后画一根直线
  DrawLine(Canvas.Handle, S, E);

在窗口的MouesDown 下面写入
 if PtInRect(LineR, Point(X, Y)) then ShowMessage('OK');
但是在终点的上下,也就是说点击并不在直线上夜显示"OK", 这样有点不准确定位是否在直线上的点



[解决办法]
那得看你点击的谁了,这和鼠标点击的对象 有关系,你的liner不一定是这个对象上的区域,所以你要注意屏幕坐标和客户区域坐标之分
[解决办法]
这是PtInRect的VCL源码
Result := (P.X >= Rect.Left) and (P.X < Rect.Right) and (P.Y >= Rect.Top)
and (P.Y < Rect.Bottom);
它在终点使用的是小于,不包括等于

热点排行