【醒目】鼠标的网格点捕获,有兴趣的人来看看,顺便帮顶,别沉下去了

Flysnow 2003-05-07 12:36:52
大概是这个意思,FORM被分隔成无数的网格,这里假设网格的宽度是5,我的目的是当鼠标在FORM上移动的时候,会主动被吸引到最邻近的网格点上。

实现的用途,可以方便对鼠标位置进行定位。

简单的思路
private void MouseMove(object sender, system.Windows.Forms.MouseEventArgs e)
{
//当前鼠标所在点坐标 ptCurrent
Point ptCurrent = new Point(e.X, e.Y);
ptCurrent.X = ptCurrent.X / 5 * 5;
ptCurrent.Y = ptCurrent.Y / 5 * 5;
Cursor.Position = PointToScreen(ptCurrent);
}

但这样做很明显不合实际,因为这样做如果想移动鼠标的话,只能快速向其他地方移动,才可能不被这个网格点吸引,所以肯求好的解法....
...全文
207 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
juqiang 2003-05-08
  • 打赏
  • 举报
回复
靠,技术板块里面,怎么有你这个鸟人?!
jlhdlj 2003-05-07
  • 打赏
  • 举报
回复
up
SmallCase 2003-05-07
  • 打赏
  • 举报
回复
up
gaodz 2003-05-07
  • 打赏
  • 举报
回复
可以设置一个外部POINT变量,记录上次鼠标点的位置.
Point OldP;
private void MouseMove(object sender, system.Windows.Forms.MouseEventArgs e)
{
if((abs(e.X-OldP.X)>5 )||(abs(e.Y-OldP.Y)>5)){
OldP=e;
return;
}
ptCurrent.X = (e.X + 2) / 5* 5;
ptCurrent.Y = (e.Y + 2) / 5* 5;
if (ptCurrent.X != e.X && ptCurrent.Y != e.Y)
Cursor.Position = PointToScreen(ptCurrent);
OldP=e;
}
Essence_zhx 2003-05-07
  • 打赏
  • 举报
回复
up
Flysnow 2003-05-07
  • 打赏
  • 举报
回复
似乎解决了

ptCurrent.X = (e.X + 2) / 5* 5;
ptCurrent.Y = (e.Y + 2) / 5* 5;
if (ptCurrent.X != e.X && ptCurrent.Y != e.Y)
Cursor.Position = PointToScreen(ptCurrent);

已经很灵活了
Flysnow 2003-05-07
  • 打赏
  • 举报
回复
实际目的:在标准绘图过程中,对于线的起始点及结束点位置要求固定,这样做的目的就是限制位置,突然之间,说都有点不会话了..
KnightRay 2003-05-07
  • 打赏
  • 举报
回复
可以每隔几个MouseMove再处理一个MouseMove。。。。
或者不在MouseMove中处理,定时对鼠标位置处理。。。。
只是想法
Knight94 2003-05-07
  • 打赏
  • 举报
回复
说说你这样做的实际目的是什么。
Flysnow 2003-05-07
  • 打赏
  • 举报
回复
我觉得AUTOCAD里的网格点捕捉很好用的,好像很有磁性....,感觉也很舒服
swiftlei 2003-05-07
  • 打赏
  • 举报
回复
需要解决一个网格边界进入,离开的判断问题
duebbin 2003-05-07
  • 打赏
  • 举报
回复
修炼中...
hilanderst 2003-05-07
  • 打赏
  • 举报
回复
加ctrl控制,正常可以移动,需要定位时候,按住左边/右边ctrl,吸引鼠标到左下/右上的网格。alt键也可以使用。
yqdeng 2003-05-07
  • 打赏
  • 举报
回复
我觉得你在画面上另外设一个标记表明指向的点可能效果更好些
你的意思我明白,不过象这样的效果我想使用者也不会喜欢的,给人感觉就像鼠标不灵活似的:-)
代码转载自:https://pan.quark.cn/s/a4b39357ea24 LA 1010 逻辑分析仪被视作一种效能卓越的数字信号分析设备,其核心功能在于对数字通信协议,例如I²C,进行检测与解构。本资源将集中阐述LA 1010的操作流程以及如何借助该设备对I²C协议的波形展开分析。 确保逻辑分析仪被正确地连接至目标系统是极为关键的环节。在运用LA 1010的过程中,必须将分析仪的通道0与通道1分别对应连接至目标装置的SCL(时钟)与SDA(数据)线路。务必保证连接的稳固性且无任何干扰因素,以此确保数据采集的精确度。 随后,需要设定采样参数。采样频率对于能否成功捕捉到信号具有决定性的作用。针对I²C协议,通常选用的采样频率范围介于100kHz到400kHz之间,这一范围的选择取决于实际应用场景中I²C总线的运行速度。然而,LA 1010所能达到的最高采样速率可能高达500MHz,因此需要根据具体需求进行相应的调整。此外,还必须精心挑选适配目标设备工作电压的电压等级,例如3.3V、5V或1.8V。 在软件操作层面,需要选取恰当的通道与协议种类,即I²C。一旦启动采样,逻辑分析仪便开始记录相关数据。软件界面通常会实时展示波形图,为观察与分析提供便利。 关于I²C协议波形的解读,我们可以遵循以下步骤: 1. 总线处于空闲状态时:SCL与SDA均维持在高电平位置,这表明总线当前未进行数据传输。 2. 传输起始信号:当SCL处于高电平期间,SDA线从高电平转换至低电平,此动作标志着数据传输的开始。 3. 地址、数据及应答的识别:在每一个SCL高电平脉冲的持续时间内,SDA线上的电平状态代表了数据位。地址与数据的传输均为双向过程,而读写标识则由SDA线上的电平来...

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧