繁体   English   中英

如何在Canon SDK C#中管理移动的缩放视图

[英]How can I manage moving zoomed view in canon sdk c#

我可以使用在codeproject Canon EDSDK库中找到的该库来使用canon sdk

除了一个,我已经完成了所有的要求。 就是向上/向下/向左/向右移动缩放的实时取景。 我可以缩放,但无法移动以查看调整手动缩放的正确位置。

我进行了搜索,来到了zoomRect,zoomPosition,zoomCoordinates ...,但我不知道它们实际上是什么以及如何使用它们。

任何建议,无论是否使用此库,代码块都会有很大帮助

您可以将Evf_ZoomPosition属性与Point结构一起使用,以设置缩放矩形的位置。 请注意,您将此属性设置为相机,但从实时显示框架中获取/读取了所有实时显示相关值。

您设置的位置是缩放矩形的左上角,有效值介于
X:0,Y:0

X:CoordinateSystem.Width-ZoomRect.Width
Y:CoordinateSystem.Height-ZoomRect.Height

确实没有必要读取ZoomPosition,因为ZoomRect X和Y是相同的值。

我终于找到了答案。 我使用过zoomposition来更改缩放矩形。 我已经使用zoomRect来获取缩放矩形的位置和大小。 这是我的做法

使用此方法设置摄像机的变焦位置。 我在库中的camera.cs中定义了此方法

    public void SetZoomPositionSetting(PropertyID propID, Point value, int inParam = 0)
    {
        CheckState();

        int size = Marshal.SizeOf(typeof(Point));
        ErrorCode err = CanonSDK.EdsSetPropertyData(CamRef, propID, inParam, size, value);
    }

我已经从您代码中的任何位置将此数据发送到方法,以更改zoomPosition

MainCamera.SetZoomPositionSetting(PropertyID.Evf_ZoomPosition, p);

这里的p是EOSDigital.SDK.Point实例。

以下是获取zoomCoordinates,zoomRect的方法。 我在库中的camera.cs中定义了这些方法

   private Rectangle GetEvfZoomRect(IntPtr imgRef)
    {
        Rectangle rect = new Rectangle();

        ErrorCode err = CanonSDK.GetPropertyData(imgRef, PropertyID.Evf_ZoomRect, 0, out rect);
        if (err == ErrorCode.OK)
            return rect;
        else
            return rect = new Rectangle();

    }

    private Size GetEvfCoord_Size(IntPtr imgRef)
    {
        Size size = new Size();

        ErrorCode err = CanonSDK.GetPropertyData(imgRef, PropertyID.Evf_CoordinateSystem, 0, out size);
        if (err == ErrorCode.OK)
            return size;
        else
            return new Size();
    }

您需要在camera.cs的DownloadEvf()方法中调用这些方法。 从获取evfImageRef之后
CanonSDK.EdsDownloadEvfImage(CamRef,evfImageRef);

在获得带有图像数据的evfImageRef之后,可以使用evfImageRef作为imgRef调用get方法。 您可以使用相同的方式获取zoomposition。 不要忘记重建库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM