上下文:有沒有辦法在C#中編寫一次性(UnlockBits)位圖?
我和我的同事們通過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
這個位圖,但是因爲它是密封的,所以這是不可能的。
此外,編寫擴展方法,如this example將無法正常工作,因爲它需要一個靜態類到Be an Extension Handler
,這不會以任何方式幫助我們。
問:
也就是說,有沒有我們可以管理,當涉及到「UnlockBits()」方法,寫一個「一次性」的位圖,而無需編寫一個「包裝」什麼辦法?
By Wrapper我的意思是一個類private bitmap attribute
,將 複製到位圖屬性調用。這將導致我們再次編寫每個位圖方法 ,並且只需在private屬性上調用具有相同名稱的方法,該屬性就是Meh。
在此先感謝