一、网上下载的ico图标制作MFC可使用的ico图标
1、从easyicon网上下载的图标.ico是RGBA格式的,直接在MFC中加载会报错。
RGBA是代表Red(红色)Green(绿色)Blue(蓝色)和Alpha的色彩空间。虽然它有的时候被描述为一个颜色空间,但是它其实仅仅是RGB模型的附加了额外的信息。采用的颜色是RGB,可以属于任何一种RGB颜色空间,但是Catmull和Smith在1971至1972年间提出了这个不可或缺的alpha数值,使得alpha渲染和alpha合成变得可能。提出者以alpha来命名是源于经典的线性插值方程αA + (1-α)B所用的就是这个希腊字母。
alpha通道一般用作不透明度参数。如果一个像素的alpha通道数值为0%,那它就是完全透明的(也就是看不见的),而数值为100%则意味着一个完全不透明的像素(传统的数字图像)。在0%和100%之间的值则使得像素可以透过背景显示出来,就像透过玻璃(半透明性),这种效果是简单的二元透明性(透明或不透明)做不到的。它使数码合成变得容易。alpha通道值可以用百分比、整数或者像RGB参数那样用0到1的实数表示。
2、使用Axialis IconWorkshop软件,将RGBA转换为RGB格式的.ico图标
2.1 文件--》打开--》ooopic_1571037568.ico
2.2 可以看到ooopic_1571037568.ico是RGB/A格式的图像
2.3 在下方的图标上,右键--》由此图像而来的新Windows图标--》选择中间的32X32-256的这一个图标
2.4 点击确定按钮后,会生成图像所示的大小为32X32,灰度等级为256的图标
2.5 文件--》另存为一个自定义的.ico图标即可
3、此时点击这个图标,虽然仍然显示为32位深,但是已经可以在MFC中直接添加了。
二、用PNG格式图像制作ico图标:
一共三步走,打开,转windows图标,另存。上图直观
三、一定要注意MFC显示的时候,图标外边也会出现一圈黑圈等问题(CimageList.create()方法使用不当!)
CImageList就是一个容器,用来存储图片资源,方便这些资源被CListBox,CComboBox,CComboBoxEx,CTabCtrl以及CTreeCtrl,CListCtrl等使用。
要使用CImgeList首先要使用它的create函数:
一般用的比较多的是这一个函数,当然,它还有很多重载,自己可以去翻阅msdn.
BOOL Create( int cx, int cy, UINT nFlags, int nInitial, int nGrow );
cx与cy表示图标的大小,nFlags确定建立图像列表的类型,可以是以下值的组合: ILC_COLOR、ILC_COLOR4、ILC_COLOR8、ILC_COLOR16、ILC_COLOR24、ILC_COLOR32、 ILC_COLORDDB和ILC_MASK;
用的较多的是ILC_COLOR32表示颜色数目,自然越多越好。
ILC_MASK也很常用,如果不设置这个值,那个图标透明的地方会被黑色填充。