界面上移动鼠标时,能不能捕捉到一个点一个点的移动事件。用OnMouseMove事件有时可以精确到一个象素,移动较快时就不行了(50)

  • 主题发起人 主题发起人 husion
  • 开始时间 开始时间
H

husion

Unregistered / Unconfirmed
GUEST, unregistred user!
如题,在鼠标移动快时,如何能捕捉到连续的点?
 
欢迎加入:89862412c#讨论群!刚开的!我看其它好多群都满了,所以自己建了一个,希望和大家一起学习进步!
 
期待高手出现。。
 
while true do SetCursorPos() ;再过滤点重复的,这样不就OK了
 
to hksoobe:你的while true do 中true是什么函义?不知道你有没有明白我的意思,现在的问题是,当我鼠标移动快了的话,就不能捕捉到连续的像素点,大家能不能给点建议呢?谢谢。
 
CreateWaitableTimer 从这个函数找突破口
 
mousemove事件响应频率在每毫秒80次左右(自己测试的),如果你要求太高估计只能自己写底层接收鼠标移动的事件了
 
to LoveHui:怎样写底层接收鼠标移动的事件,能不能给点例子或资料:)
 
不能,就算你用鼠标钩子也不行,因为Windows的Mouse.sys驱动都有一个最小响应时间,这个时间不能是0,所以当你快速移动的时候,Mouse.sys驱动根据时间间隔给你发送当前Mouse事件,呵呵!
 
大家好,我要实现的功能是这样的:1,在图上画一个任意波形,然后把波形转换为波形数据,波形数组为Y_Values[x];=y;(x,y为捕捉到的TPoint类型);2,如果我不能捕捉到连续的移动事件x,y值,那我就得不到波形数组了!3,现在的问题是:我鼠标移动快了的话,确实捕捉不到连续的x,y值,我单步调试过了。 期待高手们出手相助,分不够可以再开个贴:)
 
你的鼠标不那么渣的话,精度会准点.
 
如果想画任意波形的话,我想你不能完全按捕捉到的x,y值来画,应该在捕捉到x,y值的基础上进行计算
 
to LoveHui: 如果鼠标刚好捕捉不到波形的最高点或最低点,那么画出来的波形跟计算的波形数据就不一致了..
 
我用moveto(x1,y1)和lineto(x2,y2)画了一个近似正弦波,现在遇到一个问题:怎样擦除波形呢? 在网上查了一下资料,有人说用重画,于是我自己写了一段代码如下: procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin paintbox1.Canvas .pen.Mode:=pmnotxor; paintbox1.Canvas .moveto(x,Y_Values[x]);//Y_Values[x]函数是波形X轴对应的Y值 paintbox1.Canvas .lineto(x+1,Y_Values[x+1]); end; 以上我的意思是通过一个像素点一个像素点擦除的(即重画),但是,当我鼠标移动快的话,波形 有些点就擦除不干净了,原因我想就是鼠标移动太快捕捉不到波形上的点,请问这个问题如何解决 ?
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部