gdi + Grafik :: DrawImage wirklich langsam ~~

Ich bin mit einem GDI+ - Grafik zu zeichnen, 4000*3000 Bild auf dem Bildschirm, aber es ist wirklich langsam. Es dauert etwa 300ms. Ich wünschte, es einfach nehmen weniger als 10ms.

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

//--------------------------------------------
//dieser Teil dauert etwa 300ms, schrecklich!

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

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

Kann ich nicht verwenden CachedBitmap, weil ich zum Bearbeiten der bitmap später.

Wie kann ich es verbessern? Oder ist irgend etwas falsch?

Diese nativen GDI-Funktion zeichnet auch das Bild in den Bildschirm, und nehmen Sie nur 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);

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

Wenn ich StretchDIBits, ich übergeben zu müssen, BITMAPINFO, Aber wie bekomme ich BITMAPINFO von Gdi+ - Bitmap-Objekt? Ich habe das experiment von FreeImage lib, ich nenne StretchDIBits mit FreeImageplus Objekt, es ziehen wirklich schnell. Aber jetzt brauche ich zum zeichnen von Bitmap-und schreiben Sie einen Algorithmus auf Bitmap bit-array, wie bekomme ich BITMAPINFO wenn ich eine Bitmap-Objekt? Es ist wirklich nervig -___________-|

InformationsquelleAutor der Frage user25749 | 2008-11-05

Schreibe einen Kommentar