告别图标失真的烦恼

徐水那小子

徐水那小子

2016-01-29 12:04

告别图标失真的烦恼,告别图标失真的烦恼

告别图标失真的烦恼
作者:李晓飞

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/cyuyanjiaocheng/)

下载本文示例代码


示例代码运行效果图

自从和VC知识库认识之后我认识了不少朋友,有的象我一样走着苦苦探索的道路。其中有很多朋友问我在VC中如何保证256色以上的图标加载后不失真。根据这些提问我也曾经到各个站点上寻求答案,结果是大失所望,虽然有介绍如何实现256色以上的工具栏的文章,但是方法中大都采用加载一幅256色以上的工具栏位图的方法。这样的方法存在一个麻烦就是:有什么简便好用的制图工具来做这样的位图呢?我虽然没有尝试过去寻找这样的工具,但是我知道大家都希望有更直接的方法来使用256色以上的图标,并且保持最终的效果不失真!

所以针对以上问题我研究了MSDN,费了九牛二虎的劲最终才"修成正果",哈哈!不过有快乐得和大家一起分享,希望我的努力没有白费,好了,废话少说,咱们立刻揭开它神秘的面纱吧。

一. 建立一个单文档工程(多文档也可)。
二. 在主框架CMainFrame类的头中定义一个CImageList对象。
三. 在主框架CMainFrame类的OnCreate处理中创建CImageList对象并且向其中添加你想要的图标。

其中CImageList的创建是本工程最最关键的一步,如果写错,那你就回到原处,结果是空空如也。哈哈!

m_ilTB.Create(32, 32, TRUE | ILC_COLOR8, 4, 0); //设置ToolBar的图标列表
现在对这几个参数做个详细介绍如下:
1. 前两个参数指定图标的宽度和高度,即:图标的尺寸定义。
2. 第三个参数指定何如显示图标。ILC_ COLOR8说明以256色调色板来显示图标。而TRUE则指明了以透明方式来显示图标。那么两者进行"按位或"运算后的意义变为:以透明方式来显示256色图标。
3. 第四和第五个参数则分别为:初始图标个数和新增图标时对象自动申请内存空间的步长。如果在大批量操作图标,并且需要不断的增删图标时,设置第五个参数可以改变程序的性能,如果第五个参数设置的比较适中则可以避免程序反复的申请和释放内存空间。

四. 最后的一步就是加载和添加图标资源了。
HICON hIcon = NULL;hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON1), IMAGE_ICON, 32, 32, 0);m_ilTB.Add(hIcon);
好了,一切就是这么简单,如果你还不清楚的话,那就打开工程看看吧,如你有什么问题也不要忘记来信告诉我哦!最后祝大家学习愉快,多多交流,多多进步,一切顺利!
展开更多 50%)
分享

猜你喜欢

告别图标失真的烦恼

C语言教程 C语言函数
告别图标失真的烦恼

让你从此告别便秘烦恼

营养价值
让你从此告别便秘烦恼

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

小偏方让你告别脚臭烦恼

生活常识 生活小常识
小偏方让你告别脚臭烦恼

洗头加这些让你告别脱发烦恼

女人养生
洗头加这些让你告别脱发烦恼

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

5个好办法告别尿床烦恼

新生儿护理 新生儿 新生儿呵护
5个好办法告别尿床烦恼

Photoshop修复严重失真的老年人照片

PS相片处理 PS基础 PS PS效果
Photoshop修复严重失真的老年人照片

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

设计XP风格的按钮

设计XP风格的按钮

《部落战争》极速撸资源解析

《部落战争》极速撸资源解析
下拉加载更多内容 ↓