如何判断一个点在一个区域内?(30分)

  • 主题发起人 主题发起人 Solid_Snake
  • 开始时间 开始时间
S

Solid_Snake

Unregistered / Unconfirmed
GUEST, unregistred user!
如题,我总是失败,我是在TForm1的ONPaint里面花了一个矩形,然后用PtInRect判断,但是没有用,我又想点在矩形区域内后,传给TForm1的OnClick,但是还是不行,我的代码:<br>var<br>&nbsp; ss: TRect;<br>&nbsp; x: TPoint;<br>begin<br>&nbsp; &nbsp;with ss do<br>&nbsp; begin<br>&nbsp; &nbsp; top := 100;<br>&nbsp; &nbsp; left := 100;<br>&nbsp; &nbsp; right := 300;<br>&nbsp; &nbsp; bottom := 300;<br>&nbsp; end;<br>&nbsp; canvas.Rectangle(ss);<br>&nbsp; if PtInRect(ss,x) then<br>&nbsp; &nbsp; showmessage('szsd');<br><br>请问到底应该如何修改?谢谢了。
 
你的TPoint x没有初始化
 
但是里面有一个参数是初始化的矩形阿,难道不行的?
 
你没有初始化x,如果你的x(0,0),他就不会在ss(100,100,300,300)中。
 
初始化一下TPoint就可以了吗?<br>帮我看看这片帖子好吗,真是谢谢了。<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=2577093
 
我的意思是想如果鼠标落在区域内就出发消息,否则不触发。
 
这是我的理解,不知对否<br>procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;<br>&nbsp; Shift: TShiftState; X, Y: Integer);<br>var<br>&nbsp; ss: TRect;<br>&nbsp; x1: TPoint;<br>begin<br>&nbsp; &nbsp;with ss do<br>&nbsp; begin<br>&nbsp; &nbsp; top := 100;<br>&nbsp; &nbsp; left := 100;<br>&nbsp; &nbsp; right := 300;<br>&nbsp; &nbsp; bottom := 300;<br>&nbsp; end;<br>&nbsp; canvas.Rectangle(ss);<br>&nbsp; x1 := Point(X, Y);<br>&nbsp; if PtInRect(ss,x1) then<br>&nbsp; &nbsp; showmessage('szsd');<br>end;<br>
 
我想请问一下bundur,在delphi里面TRect,TPoint都是win32结构类型,而rect,point都是delphi函数,我经常看到TRect,TPoint使用rect,pont函数进行初始化,请问它们之间有什莫必然的联系吗?<br>不能直接对TRect,TPoint进行赋值?
 
鼠标的坐标好像是绝对坐标,是不是楼主在PtInRect时没有进行统一阿
 
bundur得方法是正确的,我在onclick里面写代码了,好像错了,能看看我最下面的那个问题吗,大家。
 
多人接受答案了。
 
后退
顶部