重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
ico做图标有两种方法:
创新互联是一家专业提供陵城企业网站建设,专注与成都网站建设、做网站、html5、小程序制作等业务。10年已为陵城众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。
1、静态图标,即在vb窗体的icon属性中指定一个图标,此时图标是以资源文件的方式保存在.frx文件中。编译时,该图标会添加到编译后的.exe文件中。
2、动态图标,在程序中通过代码方式实现图标的加载,例如:
Form1.Icon = LoadPicture("c:\myicon.ico")
编译后,该图标不会添加到.exe文件中,但运行该程序时,指定的路径下若无该图标文件,程序会报53号错误。
(WINFORM)在DATAGRID里的第一列里加入不同的ICO图标
combox12492:在VS.2005中Listview....
那你需要先了解ico的文件结构
下面是我多年前收藏的,不知现在有没有所改变,但愿对你有帮助
常看到有人说,图标文件就是普通的位图文件。我不知道为什么这样说。其实图
标文件确实有点象位图文件,但它还是有自身的表达结构的。图标文件的开头就
是一个奇怪的格式,定义如下:
tagIconDir = record
idReserved:WORD;
idType:WORD;
idCount:WORD;
idEntries:array[0..0] of tagIconDirEntry;
end;
其中的 idReserved 是保留域,目前始终为 0 ,idType 不象位图文件那样定义为
文件类型,而是定义为资源类型,是图标的话,它是 $0001 ,是光标的话,它是
$0002 ,由此可见,在定义这个类型时,MS 完全是做为资源类文件而确定的,估
计当时留下开头一个保留域的原因,也是参考位图文件格式的定义方法而保留的,
只是不知道为什么后来一直没有给这个保留域正式确定名字。 idCount 表示的是
这个文件里包含了几个图标,最早的时候,它一直是个$0002 ,也就是我们常见
的一个16X16和一个32X32两张位图的图标,现在有些图标,比如在 XP 中,已经
高达 8 个位图了。接下来是一个 idEntries 的数组结构。这个结构的大小,不是始
终为 1 的一个数组,它需要根据图标数目 ( idCount ) 来确定真实的数组大小。
为了加深理解,让我们来看一个 Windows98 安装到 Windows 目录下的一个图标:
WinUpd.ico 的开头 22byte 的情况:
00 00 01 00 06 00 20 20 10 00 00 00 00 00 E8 02 00 00 66 00 00 00
这里红色部分就是保留域 idReserved,绿色部分是资源类型 idType,紫色的是指
出这个文件包含有的图标数目 idCount,这里可以看到是一个 $6 ,表示它包含有
6 个图标。后面紧接着开始的是第一个 idEntries 数组(因为有 6 个图标,所以总
共应该有 6 个这样的 idEntries 数组)。
下面就让我们看看 idEntries 数组是怎么定义的:
tagIconDirEntry = record
bWidth:BYTE;// 图标图片的显示宽度
bHeight:BYTE;// 图标图片的显示高度
bColorCount:BYTE;// 图标图片的颜色数
bReserved:BYTE;// 保留域总是 0
wPlanes:WORD;// 图标图片的位面数
wBitCount:WORD;// 图标图片的颜色深度
dwBytesInRes:DWORD;// 图标图片占用的数据量
dwImageOffset:DWORD; // 图标图片的开始位置
end;
这个结构是很固定的 16Byte 数据,其各自的含义上面已经标出来了。由于同一
个文件中的每一个图标都有一个这样的结构,所以它实际上指的是单个图标的具
体信息。
不知道为什么,Microsoft 从来没有正式文档对上面的结构定义做过声明,John _
Hornick 在 95 年为 VC 开发者写的唯一的一个描述,成了目前所有对图标感兴趣
的开发者的圣经。因为从我的观点看来,上面结构中的一些定义一直保持着它最
初设计者的最原始的思想,Borland 公司在自己的 Win32 开发环境中跳出 MS 的
约束,自己定义了一个可以和 Canvas 共存的图标类 —— TIconImage ,从而注
定了 Borland 公司将使用自己的方式解释图标。
在后面我们会看到,tagIconDirEntry 一直不能被 MS 的核心 API 吸收为正式成
员,除了其中的 dwBytesInRes 和 dwImageOffset 2 个成员以外, 其他成员基本
没有被使用,而这 2 个成员也是作为了 MS 文件读写 API 的用途。因此,正如MS
自己所说的那样,图标文件是 Shell 的成员,只在外壳存在的时候才有效。
打包过程:
1、打开自己已经创建好的VB.NET项目(一般一开始创建项目的时候创建的是Windows窗体应用程序)。
2、点“文件”--“新建项目”--“其他项目类型”--“安装部署”--“Visual Studio Installer”--“安装项目”,输入项目名称(此处命名为setup1)并点击“确定”。
3、执行完上一步,在解决方案下面会出现setup1项目。右击setup1项目--“添加”--“项目输出”。
4、在“添加项目输出组”中,选择“主输出”,然后单击“确定”。将自动添加所有依赖项。
5、在解决方案资源管理器中,右击安装项目---“添加”---“合并模块”。 把相关模块添加进来。
6、在文件系统选项卡中添加所需的应用程序图标等文件,并生成应用程序的桌面快捷方式,在快捷方式上右键选择属性,并在属性栏中的图标处选择应用程序快捷方式图标。(要在用户桌面和用户的“程序”菜单属性里将AlwaysCreate属性的值修改为True)。这样安装完程序后就可以看到桌面的图标了
7、关于应用程序图标的详细说明:
(1)点击“应用程序文件夹”并在右侧的列表中的“主输出来自。。”上右键然后点击“创建主输出来自。。的快捷方式”
(2)把生成的快捷方式复制到“用户桌面”,然后右键重命名为你想要在程序安装后显示的名字。
(3)重命名完成后在右侧的属性栏中点击图标设置为自己想要的图标,注意,需要先把图标文件ico加入到“应用程序文件夹”中。(ico的制作:先做好256*256的png文件,然后百度ico制作找到在线制作ico的网站,直接生成ico图标文件)
关于安装后的一些属性的设置:
由于VB语言出现比较早,VB对ICO图标还停留在早期的256色。因此vb支持的ico必须包含256色的16*16
和32*32大小的ICO图标。这里需要说明的,经实践,如果不包含32*32大小的,在win7和win8部分系统会导致程序出错。
同时由于win7
win8等系统的出现,最保险的做法是,把
48*48
32*32
16*16
的256色和
32色都包含进去。为了适应win7高版本大图标的还可以包含256*256或128*128大小的图标。
图标是系统资源,与VB无关,想要自己制作图标,可以在网上下载图标制作软件,例如IconXP等,只要制作出来的图标,大小在16*16~64*64,颜色是16色或256色,VB都支持