有人可以请解释,为什么很多程序有这样的path图标:/ usr / share / program / icons / hicolor / 16×16 / …
我不明白为什么hicolor ,为什么16×16,32×32等
是否有任何function(例如在GTK中)从这种path自动获取适当的图标?
谢谢!
这些图标路径由图标主题规范标准化。 理由是,所有的应用程序都可以将它们的默认图标安装到hicolor
主题中(这是默认的主题,这意味着如果一个图标从其他主题中丢失,将使用hicolor
的版本)。
此外,程序可以请求与所提供的图标大小不同的图标,比如说37×37,系统将选择最合适的可用大小(如32x32
),并将其缩放到所需的大小。
如果有人想要覆盖应用程序的图标,比如为视力不好的用户制作高对比度的黑白版本,那么他们所要做的就是制作一个同名的图标,并将其放在高位hicolor
黑白主题,它将覆盖hicolor
图标。
你问的功能也存在。 在GTK中,有一些函数需要const gchar *icon_name
参数,比如gtk_image_new_from_icon_name()
。 这些将使用您从当前主题提供的名称加载图标,如果它不存在于当前主题中,则从hicolor
主题中hicolor
。
术语“hicolor”是标准图标集的名称,它是所有其他图标集的后备,也就是说,如果在当前图标集中找不到应用程序的图标(例如/usr/share/icons/oxygen
)接下来搜索hicolor目录。
16×16,32×32意味着存储在该目录中的图像的大小,因为图标存储为简单的PNG文件,其仅包含一个图像(不同于例如mac上的图标)。
如果这个问题不是“为什么”,“色”? 正如其他人所回答的,但“为什么使用文件系统作为树形数据库?” 答案是大多数unix文件系统(所有的旧文件系统)在步行路径中有一个目录中有超过1000个条目的时候出现故障。
因为这些文件系统中的目录必须线性搜索。
一些更现代的文件系统支持O(log N)搜索,并可以有效地处理更高的计数。