コンテクスト:
私と私の同僚は、C#を介してビットマップ画像を処理する多くの作業を行っています。
現在、画像を管理するためにAForge Frameworkも使用しています。また、AForge dllのメソッドはUnmanagedImageクラスで機能するため、ライブラリの使用を開始する前に、常にビットマップをUnmanagedImageに変換する必要があります。
単純なコード:
これは、通常、ビットマップをUnmanagedImageクラスに変換する方法です。
        BitmapData bmpData;
        Bitmap bmp =  AForgeImaging.SetTo24BitsPerPixel(bmp);
        bmpData    = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, bmp.PixelFormat);
        UnmanagedImage unmanaged = new UnmanagedImage(bmpData);
問題は、例外を回避するために、常に次のようなことをしなければならないことです。
      try
        {
            // Create Unmanaged Image
            // Process the Image And Stuff
        }
        finally
        {
           // Unlock BitmapBits
        }
私たちの目標:
try/finallyこのステートメントですべてのコードを囲む必要はありません。
それを機能させるためにこれにアプローチする方法はありますか?
ビットマップを試しましExtendたが、封印されているため不可能です。
また、この例のような拡張メソッドを作成することは、静的クラスを必要とするため機能せBe an Extension Handlerず、これはまったく役に立ちません。
質問:
そうは言っても、「ラッパー」を書かなくても、「UnlockBits()」メソッドに関して「使い捨て」ビットマップを書くことができる方法はありますか?
ラッパーとprivate bitmap attributeは、ビットマップ属性への呼び出しを複製するクラスを意味します。これにより、すべてのビットマップメソッドを再度記述し、プライベート属性で同じ名前のメソッドを呼び出すだけになります。これは一種のMehです。
前もって感謝します