C++ VS2013 如何在MFC中插入一张png图片

C++ VS2013 如何在MFC中插入一张png图片,第1张

你可以使用MFC的CImage类,该类的头文件是atlimage.h

下面是示例代码:

CDC *pDC = GetDC()

CImage Image

Image.Load(strPath)

if (Image.IsNull())

{

    MessageBox(_T("没加载成功"))

    return -1

}

if (Image.GetBPP() == 32) //确认该图像包含Alpha通道

{

    int i

    int j

    for (i = 0 i < Image.GetWidth() i++)

    {

        for (j = 0 j < Image.GetHeight() j++)

        {

            byte *pByte = (byte *)Image.GetPixelAddress(i, j)

            pByte[0] = pByte[0] * pByte[3] / 255

            pByte[1] = pByte[1] * pByte[3] / 255

            pByte[2] = pByte[2] * pByte[3] / 255

        }

    }

}

Image.Draw(pDC->m_hDC, 0, 0)

Image.Destroy()

ReleaseDC(pDC)

注意使用CImage,对于带alpha通道数据的图片要特别处理一下,上面的示例中,双循环体就是做的这个事情,你可以参考。

显示png图片可以使用gdi+或者atl里面的方法

透明背景bmp的话使用 TransparentBlt 方法,这个百度一下看一下怎么用

注意一下这个方法包含在msimg32.dll中,使用

#pragma comment( lib, "msimg32.lib" )

来连接这个库


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11713881.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存