前段时间在工作中遇到需要通过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)