コンテクスト:
私と私の同僚は、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です。
前もって感謝します