MFC中按钮控件贴上png图美化后,怎么在控件上面动态的显示数字啊,现在会被覆盖。

MFC中按钮控件贴上png图美化后,怎么在控件上面动态的显示数字啊,现在会被覆盖。,第1张

png图片绘制在OnPaint中,有两种方法:

用一个变量保存你要设置的动态数字,在OnPaint中绘制完图片后再绘制这个文本;

用一个Static控件,在你变更Static控件的时候需要刷新按钮区域

我有GDI+代码的,可以访问我的博客和下载资源,来知道如何进行PNG图片的装载和描绘。

例子是用WTL写的,可以用在MFC上面,有些细节你转换成MFC的就可以了。

博客:http://blog.csdn.net/renstarone/article/details/9089835

工程文件:http://download.csdn.net/detail/renstarone/5773661

你可以使用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通道数据的图片要特别处理一下,上面的示例中,双循环体就是做的这个事情,你可以参考。


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

原文地址:https://54852.com/bake/8002772.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存