SORU
6 Aralık 2009, Pazar


Yazı tipi rengi arka plan rengine göre belirlemek

Belirli bir sistem (bir web sitesi için örnek) sağlayan bir kullanıcı özelleştirmek arka plan rengi için bazı bölüm ama yazı tipi rengi (devam sayısı seçenekleri için en az), bir şekilde programlı olarak belirlemek için bir "ışık" ya da "koyu" yazı tipi rengi gerek var mı?

Bazı algoritması vardır eminim, ama bunu tek başıma halletmem için renk, parlaklık, vb hakkında yeterince bilgim yok.

CEVAP
6 Aralık 2009, Pazar


Benzer bir problemle karşılaştım. Karşılaştırmalı bir yazı tipi rengi seçmek iyi bir yöntem bulmak için colorscales/ısı haritaları üzerinde metin etiketlerini görüntülemek zorunda kaldım. Olmak zorundaydı evrensel yöntem ve oluşturulan renk olmalı "iyi görünümlü" anlamına gelir getirici basit tamamlayıcı renk değildi iyi çözüm bazen oluşturulan garip, çok yoğun renkler vardı zor izlemek ve okumak.

Test ve bu sorunu çözmeye çalışırken uzun saatler sonra, en iyi çözüm "" renkler ve "parlak" renkler. siyah beyaz koyu yazı tipi için yazı tipi seçmek için olduğunu öğrendim

İşte C kullanıyorum işlevi bir örnek:

Color ContrastColor(Color color)
{
    int d = 0;

    // Counting the perceptive luminance - human eye favors green color... 
    double a = 1 - ( 0.299 * color.R   0.587 * color.G   0.114 * color.B)/255;

    if (a < 0.5)
       d = 0; // bright colors - black font
    else
       d = 255; // dark colors - white font

    return  Color.FromArgb(d, d, d);
}

Bu çok çeşitli colorscales (gökkuşağı, gri, ısı, buz, ve diğerleri) için test edildi ve sadece "" ben öğrendim yöntemi. evrenseldir

Edit
a "" - gerçekten iyi görünüyor! algısal parlaklık sayma formülü değişti Zaten benim yazılım yürürlükte, harika görünüyor.

2 düzenleyin @Bu algoritma büyük bir çalışma örneği sağlanan web paylaşımı: http://codepen.io/WebSeed/full/pvgqEq/

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • gsmaestro

    gsmaestro

    17 AĞUSTOS 2006
  • L33TNoonProductions

    L33TNoonProd

    24 EYLÜL 2010
  • UrAvgConsumer

    UrAvgConsume

    1 Ocak 2012