我的是这样设置: 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", 这样有点不准确定位是否在直线上的点
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", 这样有点不准确定位是否在直线上的点
解决方案 »
- delphi 调用c动态库dll 问题
- 酷爱Delphi的进来,留下永恒的记忆!!!!!!
- Delphi 怎样查看剪贴版的内容
- 如何计算2个日期之间的差值,要求不按自然月计算,每个月按30天,就跟银行似的。
- delhpi的问题
- 请问有win2000中怎样安装一个服务?
- 怎样用代码控制EXCEL ,并用代码合并和拆散单元格向里面添加图片
- 为什么鼠标左键不能触发MouseDown事件?苦恼啊!!!!
- duxbin 近来接分~~~~~~~~~~~~~~~~~~~~~~~
- 求delphi 窗体从父窗体弹出,里面的句柄不变化的方法
- ACCESS CompactDataBase问题,在线等
- 如何录制麦克风的声音?
Result := (P.X >= Rect.Left) and (P.X < Rect.Right) and (P.Y >= Rect.Top)
and (P.Y < Rect.Bottom);
它在终点使用的是小于,不包括等于
LineR.Left := S.X;
LineR.Top := S.Y;
LineR.Right := E.X;
LineR.Bottom := E.Y;
我高清楚了,我定义的区域的问题,不能定义开始点到终点的坐标为一个区域的
所以区域是: e.x - s.x, e.y - s.y 的范围内。如果要确定是否在直线上估计要写上一个函数才可以! 谢谢楼上的热心回答!
and (P.Y < Rect.Bottom);这个是对的,MSDN 就是这么说的。 PtInRect 这个是window 的API函数的。