请问包含多个图标的图标文件里的其它图标怎么显示?

Piscis 2004-11-23 02:19:52
我搜索了帖子,好象只有一个主题在说这个,有朋友说在MSDN有解决方法,可我去MSDN看了好几天也没找到……所以再贴出来问问大家。
  我的ICON文件包含两个图标(一个32×32×256、一个48×48×256),我想显示出第二个图标来,可我弄不好……
...全文
125 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Piscis 2004-12-13
  • 打赏
  • 举报
回复
TO:tztz520(午夜逛街)
  恩,这个方法好象不行。可能是我没说清楚……我说的ICO文件包含两个图标,是指同一图标的两种格式(分别是32×32×256和48×48×256);用ExtractIcon函数检查我这个ICON文件只有一个图标。我想问的就是这种同一图标的不同格式的调用方法。而ExtractIcon函数好象更适合取EXE、DLL里的不同图标。
Coyozo 2004-11-24
  • 打赏
  • 举报
回复
呵呵
Piscis 2004-11-23
  • 打赏
  • 举报
回复
谢谢……老大^_^!我去试试………………
tztz520 2004-11-23
  • 打赏
  • 举报
回复
Private Declare Function DrawIcon Lib "user32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal hIcon As Long) As Long
Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long
Private Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long
Dim icon_n As Long
Dim icon_filename As String
Dim hmodule As Long



Private Sub Command1_Click()
icon_filename = "f:\22.ico"
Picture1.Cls
hmodule = GetModuleHandle(icon_filename)
icon_n = ExtractIcon(hmodule, icon_filename, 1) 显示第二个图标,如果后面的参数是0,就显示第一个图标,以此类推
DrawIcon Picture1.hdc, 0, 0, icon_n
End Sub
【ico】是Icon file的缩写,是Windows的图标文件格式的一种,可以存储单个图案、多尺寸、多色板的图标文件。   图标是具有明确指代含义的计算机图形。其中桌面图标是软件标识,界面中的图标是功能标识。   图标有一套标准的大小和属性格式,且通常是小尺寸的。每个图标都含有多张相同显示内容的图片,每一张图片具有不同的尺寸和发色数。一个图标就是一套相似的图片,每一张图片有不同的格式。从这一点上说图标是三维的。图标还有另一个特性:它含有透明区域,在透明区域内可以透出图标下的桌面背景。在结构上图标其实和麦当劳的巨无霸汉堡差不多。   一个图标实际上是多张不同格式的图片的集合体,并且还包含了一定的透明区域。因为计算机操作系统和显示设备的多样性,导致了图标的大小需要有多种格式。   操作系统在显示一个图标时,会按照一定的标准选择图标中最适合当前显示环境和状态的图像。如果你用的是Windows98操作系统,显示环境是 800x600分辨率,32位色深,你在桌面上看到的每个图标的图像格式就是256色32x32象素大小。如果在相同的显示环境下,Windows XP操作系统中,这些图标的图像格式就是:真彩色(32位色深)、32x32象素大小。下面就是Windows各个操作系统中的标准图标格式:(单位:大小象素—颜色)

807

社区成员

发帖
与我相关
我的任务
社区描述
VB 多媒体
社区管理员
  • 多媒体
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧