簡體   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