前段时间在工作中遇到需要通过api操作visionpro的情况,记录一下,使用鼠标拖动C#创建的Marker点,C#实现拖动CogRecordDisplay中的CogPointMarker改变位置。
效果如下图
声明变量
复制
private CogPointMarker mMarker; private bool mIsDragging; private CogRecordDisplay display;
然后初始化
复制
// 读取图片 CogImage8Grey image = new CogImage8Grey(new Bitmap(@"C:\Users\Administrator\Desktop\a.png")); // 创建marker对象 mMarker = new CogPointMarker(); mMarker.LineWidthInScreenPixels = 5; mMarker.X = 100; mMarker.Y = 100; mMarker.Color = CogColorConstants.Red; // 显示结果 display = new CogRecordDisplay(); display.Dock = DockStyle.Fill; this.Controls.Add(display); display.Image = image; display.Fit(true); // 在CogDisplay控件上显示marker对象 display.InteractiveGraphics.Add(mMarker, "point", false); // 注册鼠标事件 display.MouseDown += new MouseEventHandler(mCogDisplay_MouseDown); display.MouseMove += new MouseEventHandler(mCogDisplay_MouseMove); display.MouseUp += new MouseEventHandler(mCogDisplay_MouseUp);
鼠标操作事件
隐藏内容,解锁需要开通VIP
登录/注册
如果觉得CogPointMarker太小不好点击,想扩大CogPointMarker的点击范围,可以在外边套一个圆形或者正方形区域,然后判断鼠标点击位置是否在此区域内,然后进行移动操作。
代码就不提供了,非常简单,就一个判断点击位置是否在区域内而已,可以使用RectangleF类的Contains方法判断,或者自己写一个算法。
评论 (0)