Я создаю приложение, которое использует символические значки из темы по умолчанию.
Однако есть несколько нужных мне значков, которые не могут быть представлены значками из темы по умолчанию, поэтому я создаю свои собственные.
Я просто пошел /usr/share/icons/gnome/scalable/actions/
, скопировал несколько локально в дерево исходных текстов моего приложения, которое могло бы послужить основой, и начал их редактировать.
Все идет нормально. Но я заметил следующее: все символические значки имеют светло-серый цвет при просмотре исходного файла .svg, но когда они помещаются в виджет, они становятся темнее.
Вот пример использования /usr/share/icons/gnome/scalable/actions/view-refresh-symbolic.svg
значка из темы по умолчанию:
- Вот как это выглядит при открытии оригинала с помощью Inkscape:
- А вот как это выглядит на панели инструментов запущенного приложения:
Обратите внимание, что значок во время выполнения стал намного темнее. Это происходит как с темами Ambiance, так и Radiance.
Я бы не стал возражать, но я заметил, что это влияет на мой пользовательский значок, в результате чего его части становятся темнее (внутренняя заливка), тогда как его части остаются того же цвета, что и оригинал (штрих).
Итак, что заставляет символические значки по умолчанию темнеть и как это реализовать для моих пользовательских значков?
источник
Ответы:
#bebebeff
). Затем они могут быть окрашены на основеfg_color
значения, определенного темой вsettings.ini
(GTK3) илиgtkrc
(GTK2); или поfg_color
определению в CSS (GTK3).fg_color
) установлен на темно-серый (#4c4c4c
)/usr/share/themes/Ambiance/gtk-3.0/settings.ini
, поэтому символические значки выглядят темнее.Чтобы пользовательские символические значки выглядели одинаково, необходимо удалить обводку и использовать только заливку со значением RGBA, установленным на
#bebebeff
; в противном случае обводка всегда будет отображаться как заданная (т.е. серый или любой другой цвет).Это дает нам красивую и даже выглядящую символическую иконку «MyRefresh»:
источник
#bebebeff
?fg_color
(он использует libRSVG ); Очевидно, что двигатель различает заливки и штрихи и, по-видимому, кодируется для примененияfg_color
только к заливке, оставляя штрих как есть. Это можно сделать потому, что SVG является векторизованным (параметризованным) форматом, в то время как для обычных растровых значков это всего лишь пиксели :)Символические иконки обычно задаются темой с помощью свойства «color», это их большое преимущество, они хорошо смотрятся на любом фоне. Однако вы можете загрузить их своим собственным цветом.
Пример кода Вала:
источник