VISUAL C++中 PNG图标转换成BMP的问题
百度知道怎么改成这样了,都不会用了,在描述一下我想把PNG转换成BMP的图标,但是用PS另存出来的图像带有白底,这个白底Load到VC程序里非常难看,怎么把这个白底做成透...
百度知道怎么改成这样了,都不会用了,在描述一下
我想把PNG转换成BMP的图标,但是用PS另存出来的图像带有白底,这个白底Load到VC程序里非常难看,怎么把这个白底做成透明的?顺便问下VC里面的图标不规则形状怎么实现的?
这样说的话,是不是带有背景透明的图标,一定要是32位的位图? 展开
我想把PNG转换成BMP的图标,但是用PS另存出来的图像带有白底,这个白底Load到VC程序里非常难看,怎么把这个白底做成透明的?顺便问下VC里面的图标不规则形状怎么实现的?
这样说的话,是不是带有背景透明的图标,一定要是32位的位图? 展开
5个回答
展开全部
其实实现镂空图很简单,什么32位24位在vc都能制作且能实现半透明bmp位图,只要懂得某些现成函数或一些算法就可以了。
比如函数TransparentBlt就是专门指定位图中某一个颜色成透明。喂一的缺点就是这张位图的所有这个颜色都变成透明镂空。
方法二就是制作黑色模板,将需要部份做成黑白色与原图做与运算,将黑色需要部份抽出来。缺点就是过于麻烦,还要制作多一张位图资源。MaskBlt函数也就是这个原理了!
还有半透明色公式是:
半透明像素颜色值=原图像素X不透明度+背景图像素X(100%-不透明度)
你可以用Getbitmapbit读取位图数据进行运算。
半透明度实际也有一个现成函数AlphaBlend,不过要设置BLENDFUNCTION结构,blendop设置为AC_SRC_OVER。这些都是我做游戏时的基本知识,
希望采纳!
比如函数TransparentBlt就是专门指定位图中某一个颜色成透明。喂一的缺点就是这张位图的所有这个颜色都变成透明镂空。
方法二就是制作黑色模板,将需要部份做成黑白色与原图做与运算,将黑色需要部份抽出来。缺点就是过于麻烦,还要制作多一张位图资源。MaskBlt函数也就是这个原理了!
还有半透明色公式是:
半透明像素颜色值=原图像素X不透明度+背景图像素X(100%-不透明度)
你可以用Getbitmapbit读取位图数据进行运算。
半透明度实际也有一个现成函数AlphaBlend,不过要设置BLENDFUNCTION结构,blendop设置为AC_SRC_OVER。这些都是我做游戏时的基本知识,
希望采纳!
博思aippt
2024-07-20 广告
2024-07-20 广告
博思AIPPT是基于ai制作PPT的智能在线工具,它提供了4种AI制作PPT的方式,包括AI生成大纲、AI直接生成PPT、文本生成PPT、AI提炼文档生成PPT,一站式集成多种AI生成PPT的方式,可满足办公用户的不同需求和使用场景。ai生...
点击进入详情页
本回答由博思aippt提供
展开全部
PNG格式本身支持透明背景功能,也就是在点阵像素存储另外设置了一个颜色值作为透明色而言。
BMP只是点位图方式存储图像数据,无透明功能。
无所谓,什么颜色格式都可以透明。但是要看你用什么场合。VC开发程序显示透明效果的话,什么颜色格式都可以,内部转换了,写到frame显示的时候都是32位,使用transparentblt——这个是全透明效果。
半透明效果使用alphablend,alpha通道混合,这个需要32位的alpha通道数据。
BMP只是点位图方式存储图像数据,无透明功能。
无所谓,什么颜色格式都可以透明。但是要看你用什么场合。VC开发程序显示透明效果的话,什么颜色格式都可以,内部转换了,写到frame显示的时候都是32位,使用transparentblt——这个是全透明效果。
半透明效果使用alphablend,alpha通道混合,这个需要32位的alpha通道数据。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你看看是不是PS中你的背景色是白色的?,如果是的话,你把那个PNG的图抠下来,然后建一个透明背景的画布,再存为bmp,如果不行的话,估计要改画刷,重载控件的onpaint()函数,你试试看!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一定要是32位,因为只有32位位图才带阿尔法通道用来进行透明处理。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |