gdi+ Graphics::DrawImage非常慢~~
>
gdi+ Graphics::DrawImage非常慢~~

我正在使用GDI+图形在屏幕上绘制一个4000*3000的图像,但它真的很慢。大约需要300ms。我希望它只占用不到10毫秒。

代码语言:javascript复制Bitmap *bitmap = Bitmap::FromFile("XXXX",...);//-------------------------------------------- //这部分大约需要300ms,太可怕了!

代码语言:javascript复制int width = bitmap->GetWidth();

int height = bitmap->GetHeight();

DrawImage(bitmap,0,0,width,height);//

我不能使用CachedBitmap,因为我想稍后编辑位图。

我该如何改进它呢?或者有什么不对劲吗?

这个原生的GDI函数也会将图像绘制到屏幕上,只需要1毫秒:

代码语言:javascript复制SetStretchBltMode(hDC, COLORONCOLOR);

StretchDIBits(hDC, rcDest.left, rcDest.top,

rcDest.right-rcDest.left, rcDest.bottom-rcDest.top,

0, 0, width, height,

BYTE* dib, dibinfo, DIB_RGB_COLORS, SRCCOPY);//------------

如果我想使用StretchDIBits,我需要传递BITMAPINFO,但是我如何从Gdi+位图对象中获取BITMAPINFO?我用FreeImage库做了这个实验,我用FreeImageplus对象调用StretchDIBits,它的绘制速度非常快。但是现在我需要绘制Bitmap,并在Bitmap的bits数组上编写一些算法,如果我有一个Bitmap对象,我如何获得BITMAPINFO?这真的很烦人-_-

Shopping Cart