我在winform的项目中有这样一个需求,绘图时,需要有一个辅助功能——对象捕捉,也就是参考CAD软件中,当开启了对象捕捉之后,鼠标的移动会按照单位进行移动了。
具体效果展示在我主页视频中有一个示例。有需要可以观看
实现思路为:
如果开启对象捕捉,将鼠标默认的指针隐藏掉,再绘制一个十字代替鼠标指针
//如果开启了对象捕捉,则根据单位修正鼠标指针位置
if (isOpenCatch)
{
//根据我的单位进行修正
PointmodifyPoint = ModifyByUnit(new Point(transformedX, transformedY), _unit);
MousePos= new Point(modifyPoint.X, modifyPoint.Y);
//隐藏鼠标指针
Cursor.Hide();
//绘制十字代替鼠标指针
_g.DrawLine(new Pen(Color.Black), new Point(MousePos.X - 10, MousePos.Y), new Point(MousePos.X + 10, MousePos.Y));
_g.DrawLine(new Pen(Color.Black), new Point(MousePos.X, MousePos.Y - 10), new Point(MousePos.X, MousePos.Y + 10));
this.Invalidate();
}
else
{
//隐藏鼠标指针
Cursor.Show();
}