手动修改Icon图标的颜色深度(张佩)
手动修改Icon图标的颜色深度
-- 张佩
问题本身是这样的:我发现在MFC项目中新建图标,它的颜色色度永远都是4bit(即16色),而不是24bit(或0x1000000种颜色)。
1. ICON头
下面是Icon头的结构定义:
typedef struct
{WORD idReserved; // Reserved (must be 0)WORD idType; // Resource Type (1 for icons)WORD idCount; // How many images?ICONDIRENTRY idEntries[1]; // An entry for each image (idCount)
} ICONDIR, *LPICONDIR;
前面是3个word型变量。第一个是保留位(注释指明,一定是0),第二个为类型变量,Icon因设为1,第三个变量是图片数量,一张Icon中可以包含多个BMP图片,对应下面的多个ICONDIRENTRY结构。每个ICONDIRENTRY结构表示一张BMP图,其结构大小是16Byte。所以ICON头的总大小为:6+16×idCount。
typedef struct
{BYTE bWidth; // Width, in pixels, of the imageBYTE bHeight; // Height, in pixels, of the imageBYTE bColorCount; // Number of colors in image (0 if >=8bpp)BYTE bReserved; // Reserved ( must be 0)WORD wPlanes; // Color PlanesWORD wBitCount; // Bits per pixelDWORD dwBytesInRes; // How many bytes in this resource?DWORD dwImageOffset; // Where in the file is this image?
} ICONDIRENTRY, *LPICONDIRENTRY;
前两个变量指出了图像的大小,由于Icon图片都是长宽相等的,所以一般有16*16,32*32,48*48这几种。
最后一个DWORD变量dwImageOffset,指明对应的BMP文件在整个文件中的偏移。可以用二进制编辑软件打开一个ICON文件后,进行操练。假设某个dwImageOffset值为0X000044E6,移动鼠标到此偏移处,由此开始的一段数据块,就是一个标准的BMP文件了。我们下面就是要通过这种方法,定位BMP文件后,改变BMP文件的颜色等相关属性。
首先确定图像的Index,即它在ICONDIRENTRY列表中的位置,然后找到其BMP文件在ICON文件中的偏移,并定位到此偏移处等待进一步处理。最简单的情况是Icon文件中只有一个Bmp图像,那么Bmp文件的偏移一定总是22。
2. BMP头
typedef struct tagBITMAPINFOHEADER { /* bmih */DWORD biSize;LONG biWidth;LONG biHeight;WORD biPlanes;WORD biBitCount;DWORD biCompression;DWORD biSizeImage;LONG biXPelsPerMeter;LONG biYPelsPerMeter;DWORD biClrUsed;DWORD biClrImportant;
} BITMAPINFOHEADER;
3. 观其效
本文介绍的这种方法,可谓九牛拉一草,大力气用在小地方。 但技术爱好者处于研究的目地,这种死功夫又往往是必需的。
手动修改Icon图标的颜色深度(张佩)相关推荐
- wifi信息修改插件ios_iOS免越狱修改运营商信息/修改“应用图标标记”颜色
iOS免越狱修改运营商信息捷径/workflow规则 地址: https://www.icloud.com/shortcuts/cc295815769b44f7a711dab6910e1be8 iOS ...
- (css)修改icon图标大小
(css)修改icon图标大小 style="font-size: 20px; font-weight: bold" <i style="font-size: 20 ...
- 如何自己手动修改win10磁贴背景颜色?
前言 当我们安装完应用后,可以选择将应用图标固定到"开始"屏幕,于是就会产生一个磁贴,有的应用会自带背景颜色,有的则是默认的主题色.其实这个只不过是应用本身没有没有去适配win10 ...
- 微信小程序wx.showToast修改icon图标
wx.showToast({title:"成功",icon: 'success',image: '../../images/fail.png',duration: 2000,mas ...
- elementui icon图标使用 颜色修改
默认是黑色: 通过style属性配置color <i class="el-icon-caret-bottom" style="color: red"/&g ...
- 手动修改Spyder的背景颜色(手动配色)
spyder是一款很不错的python集成开发环境, 但安装之后默认的背景颜色太亮, 很多人都喜欢编写代码时背景为暗色, 这样时间长了眼睛不会太累. spyder中自带了一些暗背景, 在Tools - ...
- UITabBar背景、icon图标颜色、被选中背景设置以及隐藏UITabBar的两种方式
一.对UITabBar背景和icon图标的一些设置 (1)因为直接给UITabBar设置的背景颜色显示的不纯,半透明的感觉,所以,有时候我们可以直接利用纯色的图片作为背景达到想要的效果: (2)给ic ...
- 如何获取和制作免费的icon图标素材
icon 图标在界面设计中虽然占比不大,但却是不可缺少的设计元素之一.设计师通过 icon 图标,将抽象的概念通俗化,降低用户理解某个操作的难度.而设计师也会通过改变 icon 图标的样式来展现整体界 ...
- qt修改程序图标名称_解决Qt应用程序添加icon图标,修改窗口图标以及添加系统托盘问题...
一.Qt应用程序添加icon图标的方法: 首先,我们需要先准备两个文件,一个是icon图标,另一个是rc文件,我分别命名为"myApp.rc"和"soft.ico&quo ...
- PS批量快速修改png图标颜色
PS批量快速修改png图标颜色 一.背景 制作PPT的时候往往需要把图形填充颜色和图标元素的颜色设置成一样,但是往往找到的图标元素的颜色和想要的不一样,因此就需要修改图标颜色.而一个PPT需要的元素比 ...
最新文章
- 看完这篇缓存双写分析,你面试不再有问题呢~
- java代码实现看帖回帖功能_求助Java窗口菜单如何实现复制粘贴剪切等功能(内附源代码)...
- 1.11 抽象(abstract)类
- 事务的控制(保存点)
- AutoComplete - 自动完成插件
- linux 安装python-opencv
- vs code python 插件_工具篇-vscode效率提升插件
- 依赖管理和Maven
- 合泰单片机做电压表_启士 | 蓝桥杯零基础单片机教程9 I2C介绍(上)
- Mysql连接错误:Mysql Host is blocked because of many connection errors
- 如何查看JVM内存中的对象和执行中的方法
- java 存储过程简单例子
- Linux虚拟机中vim编辑器常用命令介绍(二)
- 一个简单的网页设计HTML5作业
- linux触摸屏两指缩放_Linux内核触摸屏驱动--多点触摸 【转】
- LUMION PureGlass纯正玻璃材质新功能应用
- 未转变者服务器物品ID大全,Unturned未转变者Elver物品代码大全 Elver地图全ID代码汇总...
- 本博客通知(亓官劼)
- 目标跟踪CLE绘图 OTB数据跟踪绘图 mat文件txt文件 相互转换
- 解决:Exception in thread “main“ java.io.IOException: Failed on local exception: com.google.protobuf