CImage透明贴图问题

WN15157401637 2017-10-30 04:39:32
void TransparentPNG(CImage *png)
{
for (int i = 0; i <png->GetWidth(); i++)
{
for (int j = 0; j <png->GetHeight(); j++)
{
unsigned char* pucColor = reinterpret_cast<unsigned char*>(png->GetPixelAddress(i, j));
pucColor[0] = pucColor[0] * pucColor[3] / 255;
pucColor[1] = pucColor[1] * pucColor[3] / 255;
pucColor[2] = pucColor[2] * pucColor[3] / 255;
}
}
}
void CChildView::OnPaint()
{
CPaintDC dc(this); // 用于绘制的设备上下文
CDC *cDC = this->GetDC(); //获得当前窗口的DC
GetClientRect(&m_client); //获得窗口的尺寸
CDC m_bgcDC;
m_bgcDC.CreateCompatibleDC(NULL);
CBitmap m_bgBitmap;
m_bgBitmap.LoadBitmap(IDB_BITMAP1);
m_bgcDC.SelectObject(&m_bgBitmap);
cDC->BitBlt(0, 0, m_client.Width(), m_client.Height(), &m_bgcDC, 0, 0, SRCCOPY);
BOOL BitBlt(
int nXDest, //目的DC的起始x
int nYDest, //起始y
int nWidth, //宽度
int nHeight, //高度
HDC hdcSrc, //源DC
int nXSrc, //源DC起始x
int nYSrc, //起始y
DWORD dwRop //贴图方式,大家设置为SRCCOPY就可以了
);
CImage m_hero;
m_hero.Load("E:\\Personal\\billowy\\123.png");
TransparentPNG(&m_hero);
m_hero.Draw(*cDC, 100, 400, 60, 60);
//加入我们要绘制的代码。。。。。。
ReleaseDC(cDC); //释放DC
// TODO: 在此处添加消息处理程序代码

// 不要为绘制消息而调用 CWnd::OnPaint()
}
上面是代码,我已经用了封装函数传递了透明效果,为什么运行的时候图片仍然是白底,到底哪里错了?
...全文
246 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧