【问题标题】:Display PNG image with transparent background color using Gdiplus使用 Gdiplus 显示具有透明背景颜色的 PNG 图像
【发布时间】:2018-08-23 10:22:26
【问题描述】:

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

Gdiplus::Graphics graphics(dc);
graphics.DrawImage(m_pBitmap, 0, 0);

现在如何使用透明颜色绘制png,使某种颜色的所有像素(例如:RGB(255,255,255))透明显示,并且您可以使用Gdiplus看到透明像素的背景。

我可以得到任何示例代码吗?

【问题讨论】:

    标签: gdi+


    【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 2023-04-10
      • 2013-09-26
      • 2018-10-31
      • 1970-01-01
      • 1970-01-01
      • 2018-02-23
      • 2021-08-08
      • 1970-01-01
      • 2023-03-22
      相关资源
      最近更新 更多