0

私はC#を初めて使用し、現在はキヤノンのEDSDKを使用して、カメラのライブビューをpictureBoxに表示しています。ライブビュー画像を 180° 回転させるにはどうすればよいですか?

liveView確立後に画像を回転させてみた


MainForm.cs

Camera MainCamera;  // is instanciated elsewhere
public void startLiveView() {

    MainCamera.StartLiveView();

    // at this point, live-view is working and LiveViewPicBox contains the live-view
    // this code has no effect:
    Image img = LiveViewPicBox.Image;
    img.RotateFlip(RotateFlipType.Rotate180FlipY);
    LiveViewPicBox.Image = img;
}

カメラ.cs

public void StartLiveView()
{
    CheckState();
    if (!IsLiveViewOn) SetSetting(PropertyID.Evf_OutputDevice, (int)EvfOutputDevice.PC);
}

public void SetSetting(PropertyID propID, object value, int inParam = 0)
{
    CheckState();

    MainThread.Invoke(() =>
    {
        int propsize;
        DataType proptype;
        ErrorHandler.CheckError(this, CanonSDK.EdsGetPropertySize(CamRef, propID, inParam, out proptype, out propsize));
        ErrorHandler.CheckError(this, CanonSDK.EdsSetPropertyData(CamRef, propID, inParam, propsize, value));
    });
}

SDKMethods.cs (CanonSDK)

[DllImport(DllPath)]
public extern static ErrorCode EdsGetPropertySize(IntPtr inRef, PropertyID inPropertyID, int inParam, out DataType outDataType, out int outSize);


[DllImport(DllPath)]
public extern static ErrorCode EdsSetPropertyData(IntPtr inRef, PropertyID inPropertyID, int inParam, int inPropertySize, [MarshalAs(UnmanagedType.AsAny), In] object inPropertyData);

ライブビューは機能していますが、回転は適用されません。

注:pictureBoxにはプロパティがありますWaitOnLoad=false

私は、SDK のコードの多くを理解していませんが、代わりにローテーションする必要があるある種の画像ストリームがあると思います。どこから始めればよいか教えてくれる人はいますか?

4

1 に答える 1