2012-01-29 13 views
6

Jaki jest najlepszy sposób na przyciemnienie koloru, aby był czytelny? Mam serię tytułów, które mają przypisany kolor, ale niektóre z tych kolorów są bardzo lekkie, a tekst w nich narysowany jest nieczytelny. Denerwowałem się z HSB i nie mogę znaleźć algorytmu, który przyciemnia kolor, nie sprawiając, że będzie wyglądać jak srebrzysty.C# Najlepszy sposób na przyciemnienie koloru do czasu jego czytelności

Ja w zasadzie właśnie doign to, ale nie wydaje się, aby to, co nazwałbym „dobre” wyniki:

Color c = 
    FromHSB(
    orig.A, 
    orig.GetHue(), 
    orig.GetSaturation(), 
    orig.GetBrightness() > .9 ? 
     orig.GetBrightness() - MyClass.Random(.5, .10) 
     : orig.GetBrightness()); 

Chyba chcą zmieniać nasycenie też. Czy istnieje standardowy sposób robienia tego?

+0

Czasami warto też spróbować http://ux.stackexchange.com/ – Ani

+3

Biorąc pod uwagę, że jesteś po efekt zależy od własnej osobistej opinii i postrzegania koloru, nie może znaleźć odpowiedź tutaj. Co powiesz na użycie aplikacji do malowania, aby dostosować HSL jasnego koloru i zobaczyć, co Twoim zdaniem wygląda dobrze. – ColinE

Odpowiedz

1

Po prostu zhakowałem razem randomizer dodający komponenty do wartości RGB, jeśli suma wartości RGB jest zbyt niska lub jakakolwiek pozycja jest zbyt niska. Jest to nieuzasadniony sposób, ale wydaje się, że przynosi dobre rezultaty.

double threshold = .8; 

for (int j = 0; j < 3; j++) 
{ 
    if (color.GetBrightness() > threshold) 
    { 
    color[j] -= new MyRandom(0, 20/255); 
    }     
} 
+1

Czy 20/255 nie równa się zero? –

+0

Tak, ale jego podejrzany pseudo kod ... – Mark

Powiązane problemy