GNOME sembolik simgeleri çalışan bir uygulamada neden daha koyu görünüyor?


10

Varsayılan temadan sembolik simgeler kullanan bir uygulama oluşturuyorum.

Ancak, varsayılan temanındakiler tarafından temsil edilemeyen birkaç simgeye ihtiyacım var, bu yüzden kendi simgelerimi oluşturuyorum.

Yaptığım şey basitçe gitmek /usr/share/icons/gnome/scalable/actions/, birkaçını yerel olarak uygulamamın kaynak ağacına kopyalamak ve bunları temel almaya başlamaktı.

Çok uzak çok iyi. Ancak aşağıdakileri fark ettim: tüm sembolik simgeler orijinal .svg dosyasına bakarken açık gri renktedir, ancak bir widget'a konulduklarında koyulaşırlar.

/usr/share/icons/gnome/scalable/actions/view-refresh-symbolic.svgVarsayılan temanın simgesini kullanarak bir örnek :

  • Orijinali Inkscape ile açarken şöyle görünür:

Inkscape'de view-refresh-symbolic

  • Çalışan bir uygulamadaki bir araç çubuğunda şöyle görünür:

görünüm-yenileme-sembolik çalışma zamanında

Simgenin çalışma zamanında daha koyu olduğuna dikkat edin. Bu hem Ambiance hem de Radiance temalarında olur.

Çok fazla umursamadım, ancak özel ikonumu etkilediğini fark ettim, böylece parçaları daha koyu (iç dolgu) olurken, parçaları orijinal (kontur) ile aynı renkte kalıyor.

Öyleyse varsayılan sembolik simgelerin kararmasına neden olan şey nedir ve bunu özel simgelerim için nasıl uygulamalıyım?


Simgeyi tam olarak uygulamada nasıl yüklüyorsunuz?
dobey

Glade ile, 'Simge adından yükle' ayarını kullanarak bir araç çubuğu düğmesinde.
David Planella

O zaman en olası cevap, özel simgenizi hiç yüklememesi, ancak yığında eşleşen bir ada (veya geri dönüş adına) sahip bir simge temasından biri olmasıdır.
dobey

Yanıtlar:


15
  • Sembolik simgeler, tam opaklıkla ( ) gri renkte anahtarlanmış bir renkte oluşturulur #bebebeff. Daha sonra fg_colortema tarafından settings.ini(GTK3) veya gtkrc(GTK2) 'de tanımlanan değere göre renklendirilebilirler ; veya fg_colorCSS'de (GTK3) tanımlanan.
    • Örneğin, Ambiyans için ön plan rengi ( fg_color) koyu gri ( #4c4c4c) olarak ayarlanır /usr/share/themes/Ambiance/gtk-3.0/settings.ini, bu nedenle sembolik simgeler daha koyu görünür.
  • Özel sembolik simgelerin aynı görünmesini sağlamak için konturu kaldırmalı ve yalnızca RGBA değeri olarak ayarlanmış dolgu kullanmalısınız #bebebeff; aksi takdirde, kontur her zaman ayarlandığı gibi görünür (yani gri veya herhangi bir renk).

    • Inkscape'de nesneyi seçin, Dolgu ve Kontur'u açın ve "Kontur Boyası" altındaki Boya Yok (x) simgesine tıklayın :

    resim açıklamasını buraya girin

  • Bu bize güzel ve eşit görünümlü bir "MyRefresh" sembolik simgesi verir:

    resim açıklamasını buraya girin


Bir kullanıcı, varsayılan gnome sembolik simgesi yerine farklı, daha koyu bir simgenin açıldığını belirtti; bu şeridin gösterdiği gibi, bu iddia yanlıştır:

resim açıklamasını buraya girin


Mükemmel cevap için teşekkürler! Ancak, hala tam olarak anlamadığım bir şey var: Özel sembolik simgelerin konturu olmasa bile neden konturu olamaz #bebebeff?
David Planella

Bunun Gnome'un sembolik SVG'lerifg_color ( libRSVG kullanır ) değerine göre nasıl oluşturduğu (rasterleştirdiği) ile ilgili olduğunu düşünüyorum ; motor açıkça dolgular ve konturlar arasında ayrım yapar fg_colorve konturu olduğu gibi terk ederken yalnızca dolguyu uygulamak için kodlanmış gibi görünür . Bunu yapabilir, çünkü SVG vektörleştirilmiş (parametrelenmiş) bir formattır, her zamanki bitmapli simgeler için hepsi sadece piksellerdir :)
ish

3

Sembolik simgeler genellikle tema tarafından "renk" özelliği kullanılarak ayarlanır, bu onların büyük avantajıdır, herhangi bir arka planda iyi görünürler. Ancak bunları kendi renginizle yükleyebilirsiniz.

Örnek vala kodu:

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

Gerçekten de, mevcut temaya uygun olarak yeniden renklendirilmek, neredeyse sembolik simgelerin ana amacıdır (diğeri daha basit ve daha okunaklı olmak, ki bu da teşvik eder)
underscore_d
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.