Estoy creando una aplicación que usa iconos simbólicos del tema predeterminado.
Sin embargo, hay algunos íconos que necesito que no pueden ser representados por los del tema predeterminado, así que estoy creando los míos.
Lo que hice fue simplemente ir /usr/share/icons/gnome/scalable/actions/
, copiar algunas localmente en el árbol fuente de mi aplicación que podría servir como base, y comencé a editarlas.
Hasta ahora tan bueno. Pero he notado lo siguiente: todos los íconos simbólicos son de un color gris claro al mirar el archivo .svg original, pero cuando se colocan en un widget, se vuelven más oscuros.
Aquí hay un ejemplo, usando el /usr/share/icons/gnome/scalable/actions/view-refresh-symbolic.svg
ícono del tema predeterminado:
- Así es como se ve al abrir el original con Inkscape:
- Y así es como se ve en una barra de herramientas en una aplicación en ejecución:
Observe que el ícono es mucho más oscuro en tiempo de ejecución. Eso sucede tanto con los temas Ambiance como Radiance.
No me importaría mucho, pero noté que afecta mi ícono personalizado, por lo que partes de él se vuelven más oscuras (el relleno interno), mientras que algunas partes permanecen del mismo color que el original (el trazo).
Entonces, ¿qué causa que los iconos simbólicos predeterminados se oscurezcan y cómo debería implementar eso para mis iconos personalizados?
fuente
Respuestas:
#bebebeff
). Luego se pueden colorear según elfg_color
valor definido por el tema ensettings.ini
(GTK3) ogtkrc
(GTK2); o en elfg_color
definido en el CSS (GTK3).fg_color
) está configurado en gris oscuro (#4c4c4c
)/usr/share/themes/Ambiance/gtk-3.0/settings.ini
, por lo que los iconos simbólicos aparecen más oscuros.Para que los iconos simbólicos personalizados se vean iguales, debe eliminar el trazo y usar solo relleno con el valor RGBA establecido en
#bebebeff
; de lo contrario, el trazo siempre aparecerá como conjunto (es decir, gris o cualquier color).Esto nos da un bonito y simbólico icono simbólico "MyRefresh":
fuente
#bebebeff
?fg_color
(usa libRSVG ); el motor obviamente diferencia entre los rellenos y los trazos, y parece estar codificado para aplicarsefg_color
solo al relleno mientras deja el trazo como está. Puede hacerlo porque SVG es un formato vectorizado (parametrizado), mientras que para los iconos de mapa de bits habituales, todo son solo píxeles :)Los iconos simbólicos generalmente se configuran por el tema utilizando la propiedad "color", esa es su gran ventaja, se ven bien en cualquier fondo. Sin embargo, puede cargarlos con su propio color.
Ejemplo de código vala:
fuente