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 -___________- |

questionAnswers(9)

yourAnswerToTheQuestion