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

  • 10 Daughters, 2 Sons

    10 Daughters

    10 Mart 2009
  • Munchkin the Teddy Bear

    Munchkin the

    30 EYLÜL 2011
  • UsherVEVO

    UsherVEVO

    15 EKİM 2009