关于使用GDI+绘制png透明图片的问题

yyfzy yyfzy 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我要在窗体上绘制png图片,并要实现透明效果。我使用Image加载图片后直接在窗体上绘制。

OnPaint()
{
CPaintDC dc(this);
Graphics graphics(hdc);
graphics.DrawImage(m_pImage, m_rcImg.left, m_rcImg.top, m_rcImg.right-m_rcImg.left, m_rcImg.bottom-m_rcImg.top);
}

这样能得到透明效果,但是有一个问题:
就是当我在下一个时间、在同一区域内绘制另外一张png图片的时候,原来的图片根本没有清除,在窗体上能透过新的图片的透明部分看到原来的图片(如果新图片的透明部分比原来的图片大的话)。这样就出现了重叠的效果,请问如何解决?

如果我直接使用Graphics 画在窗体上的dc上,而是先画到Memory DC,然后再贴到窗体dc上去,就会在图片透明的部分呈现出黑色,没有透明效果。

请问该如何处理这个问题??

谢谢!
...全文
评论 11
收藏 已收藏
分享
返回顶部
yyfzy
VC/MFC 16,550 成员 421,606 内容