VisionPro给我们提供了cogDisplayStatusBarV21控件来显示display控件中的数据,但这个cogDisplayStatusBarV21控件却没有提供接口让我们可以取上面的数据,因为它的数据源于display控件,所以要想取得cogDisplayStatusBarV21控件值,只需取display控件值即可,下面是测试效果。
这个问题是群员提出来的,虽然我搞不懂为什么要取这些数据,但是作为付费阅读用户,就是有这个权利提出问题,我只能尽可能解答,幸不辱命,找到了解决方案!
先解释下这三个数据分别是什么,第一个是鼠标当前位置在display控件中的坐标,这个坐标可以根据你的visionPro坐标空间自由转换。第二个数据是当前图像在display控件中的缩放大小。第三个数据是鼠标当前所指位置的像素灰度值。
既然这三个数据两个都涉及到鼠标移动事件,另一个涉及到控件改变事件,那么理所应当的要实现display控件的MouseMove
、Changed
事件,具体代码如下:
隐藏内容,解锁需要开通VIP
登录/注册
这里有个问题要说明一下,由于在鼠标移动事件中我们获取了display控件的图像,因此在该控件还未显示图像时,就会出现异常错误,为了规避这个问题,大家可以使用try语句包裹,将异常抛出,或者像我上面的写法一样,改变MouseMove
事件的注册位置。如果你使用visual studio的控件属性事件中生成的事件,那么vs会在启动窗口时为你注册MouseMove
事件,这个时候display控件无图像,就会出错,我手动注册了该事件,确保了display控件有图再执行。
评论 (3)
//鼠标移动事件是我自定义的,不是系统生成的
private void RecordDisplay1_MouseMove(object sender, MouseEventArgs e)