[英]Win32 Device Context without Window
在我的應用程序中,我需要創建我呈現的HBITMAP對象以及從中復制結果的位置。
我使用函數“CreateDIBSection”來創建這些位圖,但是此函數需要DC(設備上下文)作為第一個參數。 目前我通過在主窗口句柄(hWnd)上調用GetDC(hWnd)來實現此目的。 但是我希望能夠創建HBITMAPS而不需要有一個應用程序窗口,沒有某種內存DC,這可能嗎?
CreateCompatibleDC(NULL)
將創建一個與屏幕兼容的設備上下文 - 聽起來它在這種情況下是理想的。
您可以使用CreateDC獲取顯示:
HDC hDc = CreateDC(L"DISPLAY", NULL, NULL, NULL);
使用DeleteDC()進行清理。 它僅用於初始化具有索引格式的位圖調色板。 如果您不使用這樣的格式,NULL可能會起作用,從未嘗試過。
然后是GDI +, #include <gdiplus.h>
和Bitmap類......
試試這個。 有效。
HDC hdcScreen = ::GetDC( NULL );
HDC hdcMemDC = ::CreateCompatibleDC(hdcScreen);
HBITMAP hbmScreen = ::CreateCompatibleBitmap(hdcScreen, cx, cy);
HBITMAP hOldBitmap = (HBITMAP) ::SelectObject(hdcMemDC, hbmScreen);
MyImageDraw(hdcMemDC, ...);
// The drawing image is held in hBitmap. You can save it
HBITMAP hBitmap = (HBITMAP)::SelectObject(hdcMemDC, hOldBitmap);
// save The trend image into c:\test.bmp
PBITMAPINFO pbi = CreateBitmapInfoStruct(hBitmap);
CreateBMPFile("C:\\Temp\\test.bmp", pbi, hBitmap, hdcMemDC);
//Clean up
::DeleteObject(hbmScreen);
::DeleteObject(hdcMemDC);
::ReleaseDC( NULL, hdcScreen );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.