gdi + Graphics :: DrawImage realmente lento ~~

Estoy usando un gráfico GDI + para dibujar una imagen de 4000 * 3000 en la pantalla, pero es muy lento. Tarda unos 300 ms. Ojalá solo ocupe menos de 10 ms.

Bitmap *bitmap = Bitmap::FromFile("XXXX",...);

//-------------------------------------------- // esta parte tarda unos 300 ms, terrible!

int width = bitmap->GetWidth();
int height = bitmap->GetHeight();
DrawImage(bitmap,0,0,width,height);

// ------------------------------------------

No puedo usar CachedBitmap, porque quiero editar el mapa de bits más tarde.

¿Cómo puedo mejorarlo? ¿O hay algo mal?

Esta función nativa de GDI también dibuja la imagen en la pantalla, y solo toma 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);

// ------------------------------------------------ --------------

Si quiero usar StretchDIBits, necesito pasar BITMAPINFO, pero ¿cómo puedo obtener BITMAPINFO de un objeto de mapa de bits Gdi +? Hice el experimento por FreeImage lib, llamo StretchDIBits usando el objeto FreeImageplus, dibuja muy rápido. Pero ahora necesito dibujar Bitmap y escribir algún algoritmo en la matriz de bits de Bitmap, ¿cómo puedo obtener BITMAPINFO si tengo un objeto Bitmap? Es realmente molesto -___________- |

Respuestas a la pregunta(9)

Su respuesta a la pregunta