ビットマップのような構造体を HDC に変換する方法は?
現在、c++、gdi で画像処理プログラムを書いています。
HDCを手に入れたら。次のコードで、gdi の HDC に好きなものを描画できます。
// 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 で描画したい場合は、fipWinImage を 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);
fipImage から直接 HDC を構築したいと考えています。fipWinImage に直接描画する方法を教えてください。