Как преобразовать структуру, подобную Bitmap, в HDC?
Сейчас я пишу программу обработки изображений на c ++, gdi.
Если бы у меня был HDC. Я могу нарисовать все, что мне нравится, на HDC в gdi с помощью следующего кода.
// 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.
Мое приложение основано на FreeImage. Я делаю из fipImage. (используйте структуру данных, например Bitmap)
Однако, если я хочу рисовать на fipWinImage, теперь мне нужно скопировать fipWinImageto Bitmap, затем нарисовать на Bitmap и, наконец, снова преобразовать растровое изображение в fipImage, что требует времени и памяти.
Преобразование fipImage в растровое изображение -> Рисование на растровом изображении -> преобразование растрового изображения в 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);
Я хочу создать HDC прямо из fipImage. и рисовать прямо на fipWinImage Как мне это сделать?