SORU
20 AĞUSTOS 2012, PAZARTESİ


Eğer onaltılık renk olduğunu kontrol etmek için nasıl "black"?

Bir renk Eğer", ve eğer öyleyse, beyaz olarak ayarlayın." çok siyah diye bir renk seçici tarafından seçilen karanlığı değerlendirmek için çalışıyorum Hex değeri ilk karakter bu koparmak için kullanabileceğimi düşündüm. İşe yarıyor, ama bazı meşru "light" rengi çok açık. geçiş.

Kod bu işi var:

        if (lightcolor.substring(0,3) == "#00"|| lightcolor.substring(0,3) == "#010"){
            lightcolor="#FFFFFF";
            color=lightcolor;
        }

Bir renk karanlığa belirli bir düzeyde ötesine gittiğini bilmek hex matematik ile daha verimli bir yolu olmalı? Lightcolor gibi "bazı hex değeri" &;= lt "bazı hex değeri" sonra beyaz.. . set

Kullanım olabilir tinyColor, bunun için ekledim, ama emin için bilmiyorum

Çok teşekkürler!

CEVAP
20 AĞUSTOS 2012, PAZARTESİ


Üç RGB bileşenleri tek tek extact için var, ve sonra standart bir formül algılanan parlaklık içine çıkan RGB değerleri dönüştürmek için kullanın.

Altı karakter bir renk varsayarsak:

var c = c.substring(1);      // strip #
var rgb = parseInt(c, 16);   // convert rrggbb to decimal
var r = (rgb >> 16) & 0xff;  // extract red
var g = (rgb >>  8) & 0xff;  // extract green
var b = (rgb >>  0) & 0xff;  // extract blue

var luma = 0.2126 * r   0.7152 * g   0.0722 * b; // per ITU-R BT.709

if (luma < 40) {
    // pick a different colour
}

tinycolor(c).toRgb() RGB bileşenleri de ayıklamak için kullanabilirsiniz.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Flash CS6 Video Tutorials for Beginners (Actionscript 3 Gaming)

    Flash CS6 Vi

    14 EYLÜL 2012
  • Noam Erez

    Noam Erez

    3 NİSAN 2012
  • SunsetTrance

    SunsetTrance

    20 EYLÜL 2008