Warum erscheinen die symbolischen GNOME-Symbole in einer laufenden Anwendung dunkler?


10

Ich erstelle eine Anwendung, die symbolische Symbole aus dem Standarddesign verwendet.

Es gibt jedoch einige Symbole, die ich benötige und die nicht durch die Symbole aus dem Standardthema dargestellt werden können. Daher erstelle ich meine eigenen.

Ich ging einfach zu /usr/share/icons/gnome/scalable/actions/, kopierte einige lokal in den Quellbaum meiner App, der als Grundlage dienen konnte, und begann, sie zu bearbeiten.

So weit, ist es gut. Aber ich habe Folgendes bemerkt: Alle symbolischen Symbole haben eine hellgraue Farbe, wenn Sie die ursprüngliche .svg-Datei betrachten, aber wenn sie in ein Widget eingefügt werden, werden sie dunkler.

Hier ist ein Beispiel mit dem /usr/share/icons/gnome/scalable/actions/view-refresh-symbolic.svgSymbol aus dem Standardthema:

  • So sieht es aus, wenn Sie das Original mit Inkscape öffnen:

View-Refresh-Symbolic in Inkscape

  • Und so sieht es in einer Symbolleiste einer laufenden Anwendung aus:

view-refresh-symbolic on zur Laufzeit

Beachten Sie, dass das Symbol zur Laufzeit viel dunkler ist. Dies geschieht sowohl bei den Themen Ambiance als auch Radiance.

Es würde mir nicht viel ausmachen, aber ich bemerkte, dass es mein benutzerdefiniertes Symbol beeinflusst, wodurch Teile davon dunkler werden (die innere Füllung), während Teile davon die gleiche Farbe wie das Original behalten (der Strich).

Was bewirkt also, dass die symbolischen Standardsymbole dunkler werden und wie sollte dies für meine benutzerdefinierten Symbole implementiert werden?


Wie laden Sie das Symbol genau in die Anwendung?
Dobey

Mit Glade in einer Symbolleistenschaltfläche mit der Einstellung "Aus Symbolnamen laden".
David Planella

Die wahrscheinlichste Antwort ist dann, dass Ihr benutzerdefiniertes Symbol überhaupt nicht geladen wird, sondern eines aus einem Symbolthema im Stapel, das einen übereinstimmenden Namen (oder Fallback-Namen) hat.
Dobey

Antworten:


15
  • Die symbolischen Symbole werden in einer Farbe mit Chroma-Key erstellt , grau mit voller Deckkraft ( #bebebeff). Sie können dann basierend auf dem fg_colordurch das Thema in settings.ini(GTK3) oder gtkrc(GTK2) definierten Wert gefärbt werden . oder auf die fg_colorim CSS definierte (GTK3).
    • Für Ambiance wird beispielsweise die Vordergrundfarbe ( fg_color) auf dunkelgrau ( #4c4c4c) gesetzt /usr/share/themes/Ambiance/gtk-3.0/settings.ini, weshalb die symbolischen Symbole dunkler erscheinen.
  • Damit benutzerdefinierte symbolische Symbole gleich aussehen, müssen Sie den Strich entfernen und nur mit dem auf RGBA festgelegten Wert füllen verwenden #bebebeff. Andernfalls wird der Strich immer als festgelegt angezeigt (dh grau oder in welcher Farbe auch immer).

    • Wählen Sie in Inkscape einfach das Objekt aus, öffnen Sie Fill and Stroke und klicken Sie unter "Stroke Paint" auf das Symbol No Paint (x):

    Geben Sie hier die Bildbeschreibung ein

  • Dies gibt uns ein schönes und gleichmäßig aussehendes symbolisches "MyRefresh" -Symbol:

    Geben Sie hier die Bildbeschreibung ein


Ein Benutzer gab an, dass anstelle des symbolischen Standard-Gnomsymbols ein anderes, dunkleres Symbol geöffnet wurde. Wie diese Klammer zeigt, ist diese Behauptung falsch:

Geben Sie hier die Bildbeschreibung ein


Danke für die hervorragende Antwort! Eines verstehe ich jedoch noch nicht ganz: Warum können benutzerdefinierte symbolische Symbole keinen Strich haben, selbst wenn sie mit gefüllt sind #bebebeff?
David Planella

Ich denke, das hat damit zu tun, wie Gnome symbolische SVGs rendert (rastert), basierend auf dem Wert von fg_color(es verwendet libRSVG ); Der Motor unterscheidet offensichtlich zwischen den Füllungen und den Hüben und scheint so codiert zu sein, dass er fg_colornur auf die Füllung angewendet wird, während der Hub unverändert bleibt. Dies ist möglich, da SVG ein vektorisiertes (parametrisiertes) Format ist, während für die üblichen Bitmap-Symbole alles nur Pixel sind :)
ish

3

Symbolische Symbole werden normalerweise vom Thema mithilfe der Eigenschaft "Farbe" festgelegt. Das ist ihr großer Vorteil. Sie sehen auf jedem Hintergrund gut aus. Sie können sie jedoch mit Ihrer eigenen Farbe laden.

Beispiel Vala Code:

//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);

In der Tat ist das Umfärben entsprechend dem aktuellen Thema fast der Hauptzweck symbolischer Symbole (das andere ist, einfacher und lesbarer zu sein, was auch fördert)
underscore_d
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.