Comment convertir une structure de type bitmap en HDC?Comment convertir une structure de type gdi + bitmap en HDC?
Je suis en train d'écrire un programme de traitement d'image en C++, gdi.
Si j'ai un HDC. Je peux dessiner ce que je veux sur le HDC en gdi par le code suivant.
// 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.
Mon application est basée sur FreeImage. Je fais de fipImage. (utiliser la structure de données comme Bitmap)
Cependant, si je veux dessiner sur fipWinImage, maintenant je dois copier fipWinImageto Bitmap, puis dessiner sur le bitmap, et enfin convertir le bitmap en fipImage à nouveau, ce qui est temps comsuming et mémoire comsuming .
Convertir fipImage à Bitmap -> Dessiner sur le bitmap -> convertir 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);
Je veux construire un HDC directement à partir fipImage. et dessiner directement sur fipWinImage Comment est-ce que je peux faire ceci?