Почему символические значки GNOME отображаются более темными в запущенном приложении?

9

Я создаю приложение, которое использует символические значки из темы по умолчанию.

Однако есть несколько значков, которые мне нужны, которые не могут быть представлены теми из темы по умолчанию, поэтому я создаю свои собственные.

То, что я сделал, это просто перейти к /usr/share/icons/gnome/scalable/actions/ , скопировав несколько локально в исходное дерево моего приложения, которое могло бы послужить основой, и начал их редактировать.

Пока все хорошо. Но я заметил следующее: все символические значки имеют светло-серый цвет при просмотре исходного файла .svg, но когда они помещаются в виджет, они становятся темнее.

Вот пример, используя значок /usr/share/icons/gnome/scalable/actions/view-refresh-symbolic.svg из темы по умолчанию:

  • Вот как это выглядит при открытии оригинала с помощью Inkscape:

  • И вот как это выглядит на панели инструментов в запущенном приложении:

Обратите внимание, что во время выполнения значок становится намного темнее. Это происходит как с темами Ambiance, так и с Radiance.

Я бы не прочь много, но я заметил, что это влияет на мою обычную иконку, в которой части ее становятся темнее (внутренняя заливка), тогда как части ее остаются того же цвета, что и оригинал (штрих).

Итак, что заставляет по умолчанию символические значки темнеть и как реализовать это для моих пользовательских значков?

    
задан David Planella 10.06.2012 в 12:52
источник

2 ответа

14
  • Символьные значки создаются в цветном цветном , серый с полной непрозрачностью ( #bebebeff ). Затем они могут быть окрашены в зависимости от значения fg_color , определенного темой в settings.ini (GTK3) или gtkrc (GTK2); или на fg_color , определенном в CSS (GTK3).
    • например, для Ambiance цвет переднего плана ( fg_color ) установлен на темно-серый ( #4c4c4c ) в /usr/share/themes/Ambiance/gtk-3.0/settings.ini , поэтому символические значки становятся более темными.
  • Чтобы пользовательские символические значки выглядели одинаково, вы должны удалить штрих и использовать только заливку с значением RGBA, установленным на #bebebeff ; в противном случае штрих всегда будет отображаться как установленный (то есть серый или любой цвет).

    • В Inkscape просто выберите объект, откройте Fill and Stroke и нажмите значок Нет Paint (x) в разделе «Обводка»:

  • Это дает нам приятный и даже выглядящий символический значок «MyRefresh»:

  

Один пользователь указал, что вместо значка по умолчанию gnome открывался другой, более темный значок; как показывает это strace, это утверждение неверно:

     

    
ответ дан izx 23.06.2012 в 03:10
источник
3

Символьные значки обычно задаются темой, используя свойство «color», это их большое преимущество, они хорошо смотрятся на любом фоне. Однако вы можете загружать их своим цветом.

Пример vala-кода:

//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);
    
ответ дан Tom 22.06.2012 в 21:51