2010年6月23日 星期三

GetPixel too slow & CreateDIBSection in WINCE

在做 Text 的Overlay 的時候,有人用 GetPixel。但是GetPixel 實在很慢,查了一下網上的資料,
可能的替代的方法有
use GetDIBits
use GetBitmapBits
use LockBits ( C#, .NET FrameWork )
use LockBits ( ImagingFactory )

但是,很可惜的,在WINCE底下,前兩個函式都沒有。
所以只能用.NET CF或 ImagingFactory。

或是使用 DDB ( via CBitmap in MFC) 或者 DIBSection.
很可惜的,在MFC中 也沒有提供 DIBSection Wrapper.
詳情請參照
http://www.codeproject.com/KB/graphics/dibsection.aspx

所以說 最簡單的方式 就是使用 CreateDIBSection
然後直接對 pvBits 做存取。
對bitmap 直接存取,改善之後的速度大幅提升。
真不知道 GetPixel內部是怎麼做的,那麼慢!