我需要在C ++中将图像加载为HBITMAP,以便将其发送到打印机。
我已尝试使用Gdiplus::Bitmap::FromFile
然后使用Gdiplus::Bitmap->GetHBITMAP
,但返回的HBITMAP仍为空。
我可以使用LoadImage()
加载.bmp文件,但这不适用于PNG文件。
有人能指出我使用.png(以及更多,如果可能的话)文件类型的正确方法吗?
编辑:代码
ZeroMemory(&hBitmap, sizeof(HBITMAP));
Gdiplus::Bitmap* gpBitmap = Gdiplus::Bitmap::FromFile(L"img.png");
gpBitmap->GetHBITMAP(0, &hBitmap);
编辑2:找到解决方案
HBITMAP GetHBITMAPFromImageFile(WCHAR* pFilePath)
{
GdiplusStartupInput gpStartupInput;
ULONG_PTR gpToken;
GdiplusStartup(&gpToken, &gpStartupInput, NULL);
HBITMAP result = NULL;
Gdiplus::Bitmap* bitmap = Gdiplus::Bitmap::FromFile(pFilePath, false);
if (bitmap)
{
bitmap->GetHBITMAP(Color(255, 255, 255), &result);
delete bitmap;
}
GdiplusShutdown(gpToken);
return result;
}