unity-UGUI坐标与winform坐标的转换

来到新公司,经常需要处理海康视频和unity的结合的问题,

因为海康视频的叠加信息只能在winform上显示出来,所以通过winform将视频发给了unity,

现在需要事件在海康视频上设置规则框,在UGUI上画好规则框后将顶点在图片上的比例传给海康SDK进行设置,

就涉及到了将UGUI上图片比例传递给winform,这个比例,传递给winform之后要保证在视频图片上画的位置一样

unity-UGUI坐标与winform坐标的转换

winform上会展示视频,unity也会展示这个视频,要保证点的位置是一样的

因为winform上pictureBox的鼠标事件,获取的坐标是从左上角开始的,

unity-UGUI坐标与winform坐标的转换

但是UGUI上最好也要实现0点坐标在左上角

unity-UGUI坐标与winform坐标的转换

将显示视频的RawImage的锚点设为0,1

unity-UGUI坐标与winform坐标的转换

坐标系就变成了这样,Y轴和winform的是相反的

unity-UGUI坐标与winform坐标的转换

这是在UGUI上画的规则框,

在取点的位置的时候要取RectTransform.localPosition,这个数值是相对于其父对象的相对位置(点的父对象要设为这个RawImage)

这样在除以图片的宽高,得到的比例,就能和winfrom的匹配

一定不要用RectTransform.position

刚开始我用的也是这个值,算的比例和winform总对不上