2013-04-18 45 views
1

假設我知道背景顏色,並且我想相應地更改前景以使文本與背景不同。例如,如果當前文本顏色(前景色)爲紅色,對於用戶的某些更改,背景色也變爲紅色或接近紅色(這會使文本難以辨認),在這種情況下,我想要使用前景色更改一些顏色混合公式使其與背色不同並保持易讀性。什麼樣的顏色混合使前景不同於背色?

希望你能幫忙,謝謝。

回答

2

基於上this blog entry的信息,我可以想出以下的C#代碼,返回任一Color.BlackColor.White用於與所述給定的(背景)顏色的最佳對比:

public Color GetContrastingColor(Color backColor) 
{ 
    int r = (int)backColor.R; 
    int g = (int)backColor.G; 
    int b = (int)backColor.B; 

    int yiqSpace = ((r * 299) + (g * 587) + (b * 114))/1000; 

    if (yiqSpace > 131) 
    { 
     return Color.Black; 
    } 
    else 
    { 
     return Color.White; 
    } 
} 

該方法使用YIQ以確定顏色是否被認爲是淺色或深色,並返回一個對比色。

+0

黑色或白色對我來說是如此醜陋,我很少使用黑色或白色作爲我的控制文本。對不起 –

+0

你可以自由地返回不同的顏色或想想你自己的方法。我只是向你展示一種實現這一點的方法。 –

+0

你的答案只是讓我知道YIQ,據我所知,這可以幫助我從2種預定義顏色中選擇1種,很值得嘗試,謝謝。 –