1
我正在尋找一種方式這一GDI代碼是如何從一個設備上下文得到一個位圖...獲取圖像/位圖或gdiplus圖形對象(GDI +)
void CMFCDlg::OnPaint()
{
CDC dc(this); // Device Context for painting
CBitmap backgroundBmp;
// Get Client Area
CRect clientRect;
GetClientRect(&clientRect);
// Create memory DC
CDC memDC;
memDC.CreateCompatibleDC(&dc);
// Create compatible bitmap
backgroundBmp.CreateCompatibleBitmap(&memDC, clientRect.Width(), clientRect.Height());
// Copy Blt Bits from DC to Bitmap
CBitmap* pOldBmp = dc.SelectObject(&backgroundBmp);
memDC.BitBlt(0, 0, clientRect.Width(), clientRect.Height(), &dc, 0, 0, SRCCOPY);
dc.SelectObject(pOldBmp);
// Release the memory DC
memDC.DeleteDC();
}
。 ..可以在GDI +中完成,以接收GDI +圖像或位圖。
我正在尋找一些方法來做到這一點接近這一草案:
void CMFCDlg::OnPaint()
{
CDC dc(this); // Device Context for painting
Bitmap backgroundBmp;
// Get Client Area
CRect clientRect;
GetClientRect(&clientRect);
// Get graphics object from device context
Graphics gr(dc);
// Somehow create a compatible GDI+ bitmap
backgroundBmp = gr.??????
}
我只看到涉及GDI對象和資源,後來轉換爲:GDI +對象的代碼。但是他們都沒有爲我工作,我覺得有一種(簡單的)其他方式可以用更舒適的GDI +環境來實現。
這似乎很好地工作!我發現,如果設備上下文的內容是使用32bpp呈現繪製的,則這仍然不起作用。但我問了一個[單獨的問題](http://stackoverflow.com/questions/33058788/how-to-get-a-32bpp-bitmap-image-from-a-gdi-device-context),謝謝爲貢獻。 – Vinzenz