Tworzę aplikację, która korzysta z symbolicznych ikon z domyślnego motywu.
Jest jednak kilka ikon, których potrzebuję, których nie mogą reprezentować ikony z domyślnego motywu, więc tworzę własne.
Po prostu poszedłem do /usr/share/icons/gnome/scalable/actions/
, skopiowałem kilka plików lokalnych do drzewa źródłowego mojej aplikacji, które mogłyby służyć jako podstawa, i zacząłem je edytować.
Na razie w porządku. Zauważyłem jednak: wszystkie ikony symboliczne mają jasnoszary kolor, gdy patrzy się na oryginalny plik .svg, ale po umieszczeniu w widżecie stają się ciemniejsze.
Oto przykład, używając /usr/share/icons/gnome/scalable/actions/view-refresh-symbolic.svg
ikony z domyślnego motywu:
- Oto jak to wygląda podczas otwierania oryginału w Inkscape:
- A oto jak to wygląda na pasku narzędzi uruchomionej aplikacji:
Zauważ, że ikona jest znacznie ciemniejsza w czasie wykonywania. Dzieje się tak zarówno w przypadku motywów Ambiance, jak i Radiance.
Nie miałbym nic przeciwko, ale zauważyłem, że wpływa na moją ikonę niestandardową, przez co jej części stają się ciemniejsze (wewnętrzne wypełnienie), podczas gdy niektóre z nich pozostają tego samego koloru co oryginał (obrys).
Co więc powoduje, że domyślne ikony symboliczne przyciemniają się i jak zaimplementować to w moich ikonach niestandardowych?
źródło
Odpowiedzi:
#bebebeff
). Można je następnie pokolorować na podstawiefg_color
wartości zdefiniowanej przez motyw wsettings.ini
(GTK3) lubgtkrc
(GTK2); lub nafg_color
zdefiniowanym w CSS (GTK3).fg_color
) jest ustawiony na ciemnoszary (#4c4c4c
)/usr/share/themes/Ambiance/gtk-3.0/settings.ini
, dlatego symboliczne ikony wydają się ciemniejsze.Aby niestandardowe ikony symboliczne wyglądały tak samo, musisz usunąć obrys i użyć tylko wypełnienia z wartością RGBA ustawioną na
#bebebeff
; w przeciwnym razie obrys będzie zawsze wyświetlany jako ustawiony (tj. szary lub inny kolor).To daje nam ładną i równą ikonę symboliczną „MyRefresh”:
źródło
#bebebeff
?fg_color
(używa libRSVG ); silnik oczywiście rozróżnia napełnienia od skoków i wydaje się, że jest zakodowany tak, aby dotyczyłfg_color
tylko wypełnienia, pozostawiając suw bez zmian . Może to zrobić, ponieważ SVG jest wektoryzowanym (sparametryzowanym) formatem, podczas gdy dla zwykłych ikon bitmapowych są to tylko piksele :)Ikony symboliczne są zwykle ustawiane przez motyw za pomocą właściwości „kolor”, co jest ich wielką zaletą, dobrze wyglądają na dowolnym tle. Możesz jednak załadować je własnym kolorem.
Przykładowy kod Vala:
źródło