让代码更简单

使用C#获取VisionPro控件cogDisplayStatusBarV21的值

重要:本文最后更新于2019-12-06 08:30:51,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

VisionPro给我们提供了cogDisplayStatusBarV21控件来显示display控件中的数据,但这个cogDisplayStatusBarV21控件却没有提供接口让我们可以取上面的数据,因为它的数据源于display控件,所以要想取得cogDisplayStatusBarV21控件值,只需取display控件值即可,下面是测试效果。

使用C#获取VisionPro控件cogDisplayStatusBarV21的值

使用C#获取VisionPro控件cogDisplayStatusBarV21的值

这个问题是群员提出来的,虽然我搞不懂为什么要取这些数据,但是作为付费阅读用户,就是有这个权利提出问题,我只能尽可能解答,幸不辱命,找到了解决方案!

先解释下这三个数据分别是什么,第一个是鼠标当前位置在display控件中的坐标,这个坐标可以根据你的visionPro坐标空间自由转换。第二个数据是当前图像在display控件中的缩放大小。第三个数据是鼠标当前所指位置的像素灰度值。

既然这三个数据两个都涉及到鼠标移动事件,另一个涉及到控件改变事件,那么理所应当的要实现display控件的MouseMoveChanged事件,具体代码如下:


隐藏内容,解锁需要开通VIP
登录/注册

这里有个问题要说明一下,由于在鼠标移动事件中我们获取了display控件的图像,因此在该控件还未显示图像时,就会出现异常错误,为了规避这个问题,大家可以使用try语句包裹,将异常抛出,或者像我上面的写法一样,改变MouseMove事件的注册位置。如果你使用visual studio的控件属性事件中生成的事件,那么vs会在启动窗口时为你注册MouseMove事件,这个时候display控件无图像,就会出错,我手动注册了该事件,确保了display控件有图再执行。

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

11 打赏
感谢 1人打赏1元

评论 (3)

登录后评论
如果图像的坐标原点不在左上角的话,你代码里得到的坐标等信息和cogDisplayStatusBarV21控件显示是不一样的
实际上为什么没有触发事件呢?
//鼠标移动事件是我自定义的,不是系统生成的
private void RecordDisplay1_MouseMove(object sender, MouseEventArgs e)
本站所有代码都是测试通过的。
QQ咨询 邮件咨询 狗哥推荐