使用GDI +将PNG / JPG文件发送到HBITMAP

时间:2015-07-27 09:36:47

标签: c++ winapi gdi+

我需要在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;
}

0 个答案:

没有答案