让代码更简单

C#实现拖动CogRecordDisplay中的CogPointMarker改变位置

重要:本文最后更新于2023-04-02 15:11:56,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

前段时间在工作中遇到需要通过api操作visionpro的情况,记录一下,使用鼠标拖动C#创建的Marker点,C#实现拖动CogRecordDisplay中的CogPointMarker改变位置。

效果如下图

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方法判断,或者自己写一个算法。

感觉很棒!可以赞赏支持我哟~

2 打赏

评论 (0)

登录后评论
QQ咨询 邮件咨询 狗哥推荐