【问题标题】:How does windows really choose the right image from a resource?Windows 如何真正从资源中选择正确的图像?
【发布时间】:2011-10-10 03:43:45
【问题描述】:

我读到the following on MSDN

选择 RT_GROUP_ICON 后,必须选择并提取单个图标图像或 RT_ICON 资源。同样,如果所讨论的组仅存在一个 RT_ICON 资源,则选择是微不足道的。但是,如果组中存在多个图像,则应用以下选择规则:

  1. 尺寸最接近的图像 选择了请求的大小。

  2. 如果存在两个或多个该尺寸的图像,则选择与显示器颜色深度匹配的图像。

  3. 如果没有一个与显示器的颜色深度完全匹配,Windows 会选择具有最大颜色深度的图像,而不会超过显示器的颜色深度。

  4. 如果所有尺寸匹配的图像都超过了显示器的颜色深度,则选择颜色深度最低的图像。

  5. Windows 将所有 8 或更高 bpp 的颜色深度视为相同。例如,在同一资源中拥有 16x16 256 彩色图像和 16x16 16bpp 图像是没有意义的——Windows 只会选择它遇到的第一个。

  6. 当显示器处于 8bpp 模式时,Windows 将优先使用 16 色图标而不是 256 色图标,并将使用系统默认调色板显示所有图标。

但是我also read认为开发者应该提供8位和24位,8位和4位的版本,每种尺寸都支持不同的深度。如果上面的#5 是真的,为什么我需要 8 位版本?如果#5 为真,那么#6 如何应用?

Windows 究竟是如何选择的?如果 windows 对它们都一视同仁,那么包含所有这些颜色深度真的很重要吗?

【问题讨论】:

  • 您的链接可以追溯到石器时代,16 年是很久以前的事了。您遇到以 8bpp 运行的视频适配器的可能性为零。
  • @Hans - 当前文档声明相同:About Icons # Icon Display。 1,2,3,4在(2)的列表项中,5、6在note中。

标签: windows winapi colors icons


【解决方案1】:

如果#5 为真,图标的顺序很重要:

  • 32x32x16bpp = 16bpp 将被选择
  • 32x32x8bpp

(我知道我使用的图标编辑器会在您保存时自动按大小和颜色深度对图标进行排序)

如果您的应用程序在

我很确定#6 不是真的,IIRC 的 Win95 加号包使外壳可以使用 256 色而不是默认的 16 色图标。

Vista 添加了LoadIconMetric 并尝试使用更好的源图标算法缩小图标。

现在大多数人都以@32bpp 运行,所以颜色深度和 16/256 色图标可能不再那么重要了......

【讨论】:

  • ...当然,如果您的图标有可能在安全模式下显示,那么 16 色版本实际上可能是一个不错的主意。
猜你喜欢
  • 1970-01-01
  • 2021-10-17
  • 2015-08-07
  • 2021-11-23
  • 1970-01-01
  • 2013-12-27
  • 2019-08-31
  • 1970-01-01
相关资源
最近更新 更多