微软提供了CImage类,使用CImage可以非常方便显示PNG图片。
1.定义一个成员变量
CImage m_img;
2.导入png
void LoadPNG(CImage &cimg, const CString& strPath){ if(!PathFileExists(strPath)) { printf("png did not exist.n"); return; } if(!cimg.IsNull()) { cimg.Destroy(); } cimg.Load(strPath);}
3.使用的时候只要
LoadPNG(m_img, _T("c:\某张图片.png"));
4.显示png
void CDlg::OnPaint(){ CPaintDC dc(this); if (!m_img.IsNull()) { //透明显示png if (m_img.GetBPP() == 32) //确认该图像包含Alpha通道 { for (int i=0; i<m_img.GetWidth(); ++i) { for (int j=0; j<m_img.GetHeight(); ++j) { byte *pByte = (byte *)m_img.GetPixelAddress(i, j); pByte[0] = pByte[0] * pByte[3] / 255; pByte[1] = pByte[1] * pByte[3] / 255; pByte[2] = pByte[2] * pByte[3] / 255; } } } //m_img.Draw(dc.m_hDC, 0, 0); m_img.Draw(dc.m_hDC, m_imgRc); //在一个区域中显示 }}