我正在尝试将HBITMAP转换为Gdiplus位图。我的代码正在获取一些屏幕截图,其中包含我从谷歌发现并将其放入HBITMAP的一些代码。我想使用Gdiplus获取rgb值(特别是argb)。
获取屏幕截图的代码工作文件,但将HBITMAP转换为Bitmap的行会引发大量疯狂的链接器错误。这是我的代码:
HDC hScreenDC = CreateDC((LPCWSTR)"DISPLAY", NULL, NULL, NULL);
// and a device context to put it in
HDC hMemoryDC = CreateCompatibleDC(hScreenDC);
int x = GetDeviceCaps(hScreenDC, HORZRES);
int y = GetDeviceCaps(hScreenDC, VERTRES);
// maybe worth checking these are positive values
HBITMAP hBitmap = CreateCompatibleBitmap(hScreenDC, x, y);
// get a new bitmap
HBITMAP hOldBitmap = (HBITMAP)SelectObject(hMemoryDC, hBitmap);
BitBlt(hMemoryDC, 0, 0, 1920, 1080, hScreenDC, 0, 0, SRCCOPY);
hBitmap = (HBITMAP)SelectObject(hMemoryDC, hOldBitmap);
// clean up
DeleteDC(hMemoryDC);
DeleteDC(hScreenDC);
Gdiplus::Bitmap* pBitmap = Gdiplus::Bitmap::FromHBITMAP( hBitmap, NULL ); // <-- problem line
线性错误是LNK2019并说: 错误2错误LNK2019:未解析的外部符号_GdipFree @ 4在函数“public:static void __cdecl Gdiplus :: GdiplusBase :: operator delete(void *)”中引用(?? ?? 3GdiplusBase @ Gdiplus @@ SAXPAX @ Z)
我已经包含了gdiplus.h,windows.h和#define GDIPVER 0x110
知道如何解决这个问题吗?
答案 0 :(得分:0)
要检查的第一件事 - 您是否已链接到gdiplus.lib?这很可能就是问题所在。
在开始使用GDI +功能之前,请确保在某个时刻调用了GdiplusStartup()。
答案 1 :(得分:0)