GDI+双缓冲,造成PNG图片无法透明问题,求高手解答

时间:2022-03-23 19:11:37
GDI+双缓冲,时,是创建
MemDC.CreateCompatibleDC(pDC);
Membmp.CreateCompatibleBitmap(pDC,m_img_bg->GetWidth(),m_img_bg->GetHeight());
MemDC.SelectObject(&Membmp);

Graphics graphics(MemDC.GetSafeHdc());
graphics.DrawImage(m_img_bg, 0, 0, m_img_bg->GetWidth(), m_img_bg->GetHeight());

Bitmap是无法透明的,谁能有好的解决办法

7 个解决方案

#1


你要怎么样透明?Membmp是什么内容?

#2


png是透明图片,Membmp,里面DrawImage了,两张PNG的图片,一张是背景图片,背景有透明效果,画到Membmp,就失去这效果了,有没有其他双缓冲的方法,或是解决这个的方法

#3


窗体背景是不能使用透明图片的,如果一定要用,要使用rgn来裁剪窗口。

另:如果对同一背景画多次png也是不能透明的。

#4


引用 3 楼 cpp2017 的回复:
窗体背景是不能使用透明图片的,如果一定要用,要使用rgn来裁剪窗口。

另:如果对同一背景画多次png也是不能透明的。

正解

#5


好,谢谢,我再去看看

#6


MemDC.CreateCompatibleDC(pDC);
Membmp.CreateCompatibleBitmap(pDC,m_img_bg->GetWidth(),m_img_bg->GetHeight());
MemDC.SelectObject(&Membmp);

MemDC.Bitblt(0, 0, m_img_bg->GetWidth(), m_img_bg->GetHeight(), pDC, 0, 0, SRCCOPY);

Graphics graphics(MemDC.GetSafeHdc());
graphics.DrawImage(m_img_bg, 0, 0, m_img_bg->GetWidth(), m_img_bg->GetHeight());

#7


来学习下。

#1


你要怎么样透明?Membmp是什么内容?

#2


png是透明图片,Membmp,里面DrawImage了,两张PNG的图片,一张是背景图片,背景有透明效果,画到Membmp,就失去这效果了,有没有其他双缓冲的方法,或是解决这个的方法

#3


窗体背景是不能使用透明图片的,如果一定要用,要使用rgn来裁剪窗口。

另:如果对同一背景画多次png也是不能透明的。

#4


引用 3 楼 cpp2017 的回复:
窗体背景是不能使用透明图片的,如果一定要用,要使用rgn来裁剪窗口。

另:如果对同一背景画多次png也是不能透明的。

正解

#5


好,谢谢,我再去看看

#6


MemDC.CreateCompatibleDC(pDC);
Membmp.CreateCompatibleBitmap(pDC,m_img_bg->GetWidth(),m_img_bg->GetHeight());
MemDC.SelectObject(&Membmp);

MemDC.Bitblt(0, 0, m_img_bg->GetWidth(), m_img_bg->GetHeight(), pDC, 0, 0, SRCCOPY);

Graphics graphics(MemDC.GetSafeHdc());
graphics.DrawImage(m_img_bg, 0, 0, m_img_bg->GetWidth(), m_img_bg->GetHeight());

#7


来学习下。