Wie konvertiert man eine Bitmap-ähnliche Struktur in eine HDC?Wie konvertiert man eine gdi + Bitmap-ähnliche Struktur in eine HDC?
Ich schreibe jetzt Bildverarbeitungsprogramm in C++, GDI.
Wenn ich einen HDC habe. Ich kann auf dem HDC in GDI zeichnen, was ich mag, durch den folgenden Code.
// HDC is handy.
HDC dc;
dc.DrawXXX // I can draw using gdi method.
Graphics gr(dc); // now I can also draw on the dc using gdi+ method.
Meine Anwendung basiert auf FreeImage. Ich mache von fipImage. (benutze Datenstruktur wie Bitmap)
Wenn ich jedoch auf fipWinImage zeichnen möchte, muss ich jetzt fipWinImageto Bitmap kopieren, dann auf die Bitmap zeichnen und schließlich die Bitmap wieder in fipImage konvertieren, was zeitaufwendig und mühsam ist .
Convert fipImage zu Bitmap -> auf der Bitmap-Draw -> konvertieren Bitmap fipWinImage
fipWinImage imagefip;
Bitmap* tempImg = new Bitmap(imagefip->GetWidth(), imagefip.GetHeigt(), PixelFormat24bppRGB); // memory comsuming is image is large
Graphics *pGr = Graphics::FromImage(tempImg);
HDC dc = pGr->GetHDC();
RECT rec;
rec.left = 0;
rec.top = 0;
rec.right = imagefip.GetWidth();
rec.bottom = imagefip.GetHeight();
fipImage.draw(dc, rec); // using stretchdibits()
pGr->ReleaseHDC(dc);
Graphics gr(tempImg);
HDC dc = gr.GetHDC(); // Get an Hdc, draw using gdi method
gr.ReleaseHDC(tempDC); //
gr.drawXXX // Draw using gdi+ method.
fipWinImage fipImg; // final result fipWinImage.
HBITMAP temp;
Color color;
tempImg->GetHBITMAP(color, &temp);
fipImg->copyFromBitmap(temp);
ich einen HDC direkt von fipImage bauen will. und zeichne direkt auf fipWinImage Wie kann ich das tun?