2016-11-30 62 views
0

即。如果背景爲白色,則標籤textcolour應該是白色,反之亦然如何根據背景改變標籤的前景

即時消息使用以下代碼bgDelta始終爲0,顏色不同,但在白色背景的情況下,標籤顏色也是白色。

public Color IdealTextColor(Color bg) 
    { 
     int nThreshold = 105; 
     int bgDelta = Convert.ToInt32((bg.R * 0.299) + (bg.G * 0.587) + (bg.B * 0.114)); 
     Color fColor = (105 - bgDelta < nThreshold) ? Color.Black : Color.White; 
     return fColor; 
    } 
+0

你好倒黴請讓我知道它有什麼方法解決 –

回答

0

當我調試我把它弄黑;

//bg.R=255, bg.G=255, bg.B=255 
bgDelta=76.245 + 149.685 + 29.07= 255 
105 - bgDelta=-150 
result=Color.Black 

代碼;

IdealTextColor(Color.White); 
... 
public Color IdealTextColor(Color bg){ 
int nThreshold = 105; 
int bgDelta = Convert.ToInt32((bg.R * 0.299) + (bg.G * 0.587) + (bg.B * 0.114)); 
Color fColor = (105 - bgDelta < nThreshold) ? Color.Black : Color.White; 
return fColor;} 

更好的方法;

double fcolor = 1 - (0.299 * color.R + 0.587 * color.G + 0.114 * color.B)/255; 
+0

事實就是bgdelta始終是0和u只會讓黑 –

+0

你可以使用不同的算法:基於背景顏色[確定字體顏色](http://stackoverflow.com/a/1855903/3060520) –

0
lable.ForeColor = form.BackColor 
+0

我的意思是不背色基於背面顏色 –