代码之家  ›  专栏  ›  技术社区  ›  Tommy

如何将点从一个设备转换为另一个设备

  •  0
  • Tommy  · 技术社区  · 1 年前

    device 1

    设备1

    device 2

    设备2

    设备1正在将视频馈送流式传输到设备2。当我在视频层上方的视频容器视图层的顶部绘制一条线时,我想在与视频相关的同一位置的第二个设备上重新绘制这条线。通过显示的红色背景来自包含视频层的视图。视频层的contentsGravity设置为.rezeAspectFill。

    我试图转换点并重新绘制线,但它被关闭了。

    var targetCoord = CGPoint()
            
    targetCoord.x = originCoord.x / originScreenSize.width * targetScreenSize.width
    targetCoord.y = originCoord.y / originScreenSize.height * targetScreenSize.height
    

    如何考虑顶部间隙和侧面间隙(红色区域)的差异?将形状层添加到缓冲区并发送到其他设备是不可行的,因为这很慢,而且绘图需要双向进行。我很难理解它,如果有任何帮助,我将不胜感激!

    0 回复  |  直到 1 年前
        1
  •  0
  •   Tommy    1 年前

    首先,我需要通过使用来消除两个视图上的红色区域 AVMakeRect(aspectRatio:insideRect) 以获得适合视频的rect,并设置包含视频层的视图的帧。这样,点将完全对应。

    我对转换有正确的想法,但我使用了错误的宽度和高度值。不要使用屏幕大小,而是使用包含视频层的视图的大小。

    var targetCoord = CGPoint()
           
    targetCoord.x = originCoord.x / sourceViewSize.width * targetViewSize.width
    targetCoord.y = originCoord.y / sourceViewSize.height * targetViewSize.height