为什么GNOME符号图标在正在运行的应用程序中看起来更暗?


10

我正在创建一个使用默认主题中的符号图标的应用程序。

但是,我需要一些图标,这些图标不能由默认主题的图标表示,因此我正在创建自己的图标。

我要做的只是简单地转到/usr/share/icons/gnome/scalable/actions/,将一些本地副本复制到我的应用程序的源代码树中(可以作为基础),然后开始对其进行编辑。

到现在为止还挺好。但是我注意到了以下几点:当查看原始的.svg文件时,所有符号图标均为浅灰色,但是当将它们放到小部件上时,它们会变得更暗。

这是一个示例,使用/usr/share/icons/gnome/scalable/actions/view-refresh-symbolic.svg默认主题中的图标:

  • 这是使用Inkscape打开原稿时的外观:

在Inkscape上查看刷新符号

  • 这是正在运行的应用程序的工具栏上的外观:

在运行时查看刷新符号

请注意,该图标在运行时变暗了。这与“氛围”和“发光”主题都发生。

我不太在意,但是我注意到它会影响我的自定义图标,从而使其中的一部分变暗(内部填充),而其一部分保持与原始颜色相同(笔触)。

那么,是什么导致默认符号图标变暗,以及应如何为我的自定义图标实现呢?


您如何在应用程序中准确加载图标?
dobey 2012年

对于Glade,在工具栏按钮中使用“从图标名称加载”设置。
David Planella 2012年

那么最可能的答案是,它根本不会加载您的自定义图标,而是从堆栈中的一个图标主题加载一个,该主题具有匹配的名称(或备用名称)。
dobey 2012年

Answers:


15
  • 符号图标以色键输入的颜色创建,灰色为完全不透明(#bebebeff)。然后可以根据(GTK3)或(GTK2)中fg_color主题定义的值对它们进行着色。或在CSS(GTK3)中定义。 settings.inigtkrcfg_color
    • 例如,对于Ambiance,前景颜色(fg_color)在中设置为深灰色(#4c4c4c/usr/share/themes/Ambiance/gtk-3.0/settings.ini,这就是符号图标显得更暗的原因。
  • 要使自定义符号图标看起来相同,必须删除笔触,并且仅使用RGBA值设置为#bebebeff;的填充。否则,笔划将始终显示为固定(即,灰色或任何颜色)。

    • 在Inkscape中,只需选择对象,打开Fill and Stroke,然后单击“ Stroke Paint”下的No Paint(x)图标:

    在此处输入图片说明

  • 这为我们提供了一个美观且均匀的“ MyRefresh”符号图标:

    在此处输入图片说明


一个用户表示正在打开一个不同的深色图标,而不是默认的gnome符号图标。如该strace所示,该断言是不正确的:

在此处输入图片说明


感谢您的出色回答!但是,还有一件事我还不太了解:为什么自定义符号图标即使笔触填充也不能描边#bebebeff
David Planella 2012年

我认为这与Gnome如何基于fg_color(它使用libRSVG)的值渲染(栅格化)符号SVG有关。引擎显然会在填充和笔划之间进行区分,并且似乎被编码为fg_color仅适用于填充而保留笔画不变。可以这样做是因为SVG是矢量化(参数化)格式,而对于通常的位图图标来说,它们全都是像素:)
ish 2012年

3

符号图标通常由主题使用“颜色”属性设置,这是它们的巨大优点,它们在任何背景上都看起来不错。但是,您可以使用自己的颜色加载它们。

示例代码:

//get the icon theme and lookup the icon we want by name, here at a size of 64px
var info = Gtk.IconTheme.get_default ().lookup_icon ("view-refresh-symbolic", 64, 0);

//now load the icon as a symbolic with a color set in the brackets as RGBA, here as plain red
var pixbuf = info.load_symbolic ({1, 0, 0, 1});

//finally we just put in a GtkImage to render it
var image_widget = new Gtk.Image.from_pixbuf (pixbuf);

确实,重新涂色以适合当前主题,几乎是象征性图标的主要目的(另一种目的是更简单易懂,这也有所促进)
underscore_d
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.