gdi + Graphics :: DrawImage muito lento ~~
Estou usando um gráfico GDI + para desenhar uma imagem 4000 * 3000 na tela, mas é muito lento. Demora cerca de 300ms. Eu gostaria que ele ocupasse menos de 10ms.
Bitmap *bitmap = Bitmap::FromFile("XXXX",...);
//-------------------------------------------- // esta parte leva cerca de 300ms, terrível!
int width = bitmap->GetWidth();
int height = bitmap->GetHeight();
DrawImage(bitmap,0,0,width,height);
// ------------------------------------------
Não consigo usar o CachedBitmap, porque desejo editar o bitmap posteriormente.
Como posso melhorar isso? Ou algo está errado?
Essa função GDI nativa também desenha a imagem na tela e leva apenas 1 ms:
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);
// ------------------------------------------------ --------------
Se eu quiser usar o StretchDIBits, preciso passar o BITMAPINFO, mas como posso obter o BITMAPINFO de um objeto Gdi + Bitmap? Eu fiz o experimento pela FreeImage lib, eu chamo StretchDIBits usando o objeto FreeImageplus, ele desenha muito rápido. Mas agora eu preciso desenhar o Bitmap e escrever algum algoritmo na matriz de bits do Bitmap, como posso obter o BITMAPINFO se eu tiver um objeto Bitmap? É realmente irritante -___________- |