使用Gdiplus显示具有透明背景色的PNG图像

时间:2018-08-22 05:59:19

标签: gdi+

我在Gdiplus :: image中有png。我可以使用以下代码渲染图像。

SELECT DISTINCT (CITY) 
FROM STATION 
WHERE NOT regexp_like(lower(CITY),'^[aeiou].*[aeiou]$');

现在如何绘制具有透明颜色的png,以便某种颜色的所有像素(例如:Gdiplus::Graphics graphics(dc); graphics.DrawImage(m_pBitmap, 0, 0); )都透明显示,并且您可以看到使用Gdiplus的透明像素的背景。

我可以获取任何示例代码吗?

1 个答案:

答案 0 :(得分:1)

使用ImageAttributesSetColorKey

    Gdiplus::Bitmap bm(L"transparent.png", TRUE);
    if(bm.GetLastStatus() == Gdiplus::Status::Ok)
    {
        Gdiplus::Graphics gr(hdc);

        Gdiplus::ImageAttributes attr;
        attr.SetColorKey(Gdiplus::Color(255, 255, 255), Gdiplus::Color(255, 255, 255),
            Gdiplus::ColorAdjustTypeBitmap);

        gr.DrawImage(
            &bm,
            Gdiplus::Rect(0, 0, bm.GetWidth(), bm.GetHeight()),
            0, 0, bm.GetWidth(), bm.GetHeight(),
            Gdiplus::UnitPixel,
            &attr);
    }
    else
        MessageBox(0, L"error", 0, 0);