CRect rectP;
m_picture.GetClientRect(&rectP);
CDC *pDC = m_picture.GetDC();
CImage ImageBottom, ImageTop;
ImageBottom.Load(_T("../Res/444.bmp"));
ImageBottom.Draw(pDC->m_hDC, 0, 0, rectP.Width(), rectP.Height(), 0, 0, ImageBottom.GetWidth(), ImageBottom.GetHeight());
ImageBottom.Destroy();
ImageTop.Load(_T("../Res/国旗.png"));
if (ImageTop.IsNull())
{
MessageBox(_T("没加载成功"));
return -1;
}
if (ImageTop.GetBPP() == 32) //确认该图像包含Alpha通道
{
int i;
int j;
for (i = 0; i < ImageTop.GetWidth(); i++)
{
for (j = 0; j < ImageTop.GetHeight(); j++)
{
byte *pByte = (byte *)ImageTop.GetPixelAddress(i, j);
pByte[0] = pByte[0] * pByte[3] / 255;
pByte[1] = pByte[1] * pByte[3] / 255;
pByte[2] = pByte[2] * pByte[3] / 255;
}
}
}
ImageTop.Draw(pDC->m_hDC, 0, 0, rectP.Width(), rectP.Height(), 0, 0, ImageTop.GetWidth(), ImageTop.GetHeight());
ImageTop.Destroy();
ReleaseDC(pDC);
废话不多说,直接上代码,亲测可用:如图,底图为bitmap,国旗为透明背景png