VISUAL C++中 PNG图标转换成BMP的问题

百度知道怎么改成这样了,都不会用了,在描述一下我想把PNG转换成BMP的图标,但是用PS另存出来的图像带有白底,这个白底Load到VC程序里非常难看,怎么把这个白底做成透... 百度知道怎么改成这样了,都不会用了,在描述一下

我想把PNG转换成BMP的图标,但是用PS另存出来的图像带有白底,这个白底Load到VC程序里非常难看,怎么把这个白底做成透明的?顺便问下VC里面的图标不规则形状怎么实现的?

这样说的话,是不是带有背景透明的图标,一定要是32位的位图?
展开
 我来答
7820779
2010-11-14 · TA获得超过330个赞
知道小有建树答主
回答量:390
采纳率:0%
帮助的人:384万
展开全部
其实实现镂空图很简单,什么32位24位在vc都能制作且能实现半透明bmp位图,只要懂得某些现成函数或一些算法就可以了。
比如函数TransparentBlt就是专门指定位图中某一个颜色成透明。喂一的缺点就是这张位图的所有这个颜色都变成透明镂空。
方法二就是制作黑色模板,将需要部份做成黑白色与原图做与运算,将黑色需要部份抽出来。缺点就是过于麻烦,还要制作多一张位图资源。MaskBlt函数也就是这个原理了!
还有半透明色公式是:

半透明像素颜色值=原图像素X不透明度+背景图像素X(100%-不透明度)

你可以用Getbitmapbit读取位图数据进行运算。
半透明度实际也有一个现成函数AlphaBlend,不过要设置BLENDFUNCTION结构,blendop设置为AC_SRC_OVER。这些都是我做游戏时的基本知识,
希望采纳!
博思aippt
2024-07-20 广告
博思AIPPT是基于ai制作PPT的智能在线工具,它提供了4种AI制作PPT的方式,包括AI生成大纲、AI直接生成PPT、文本生成PPT、AI提炼文档生成PPT,一站式集成多种AI生成PPT的方式,可满足办公用户的不同需求和使用场景。ai生... 点击进入详情页
本回答由博思aippt提供
stone_dongdong
2010-11-13 · TA获得超过2853个赞
知道大有可为答主
回答量:1636
采纳率:0%
帮助的人:1002万
展开全部
PNG格式本身支持透明背景功能,也就是在点阵像素存储另外设置了一个颜色值作为透明色而言。
BMP只是点位图方式存储图像数据,无透明功能。

无所谓,什么颜色格式都可以透明。但是要看你用什么场合。VC开发程序显示透明效果的话,什么颜色格式都可以,内部转换了,写到frame显示的时候都是32位,使用transparentblt——这个是全透明效果。
半透明效果使用alphablend,alpha通道混合,这个需要32位的alpha通道数据。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hucheng_lew
2010-11-12 · 超过44用户采纳过TA的回答
知道小有建树答主
回答量:167
采纳率:0%
帮助的人:131万
展开全部
你看看是不是PS中你的背景色是白色的?,如果是的话,你把那个PNG的图抠下来,然后建一个透明背景的画布,再存为bmp,如果不行的话,估计要改画刷,重载控件的onpaint()函数,你试试看!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
weyoin
2010-11-12 · TA获得超过169个赞
知道小有建树答主
回答量:293
采纳率:0%
帮助的人:185万
展开全部

如图所示

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
li668xiao
2010-11-13 · TA获得超过611个赞
知道小有建树答主
回答量:412
采纳率:61%
帮助的人:248万
展开全部
一定要是32位,因为只有32位位图才带阿尔法通道用来进行透明处理。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式