2015-08-19 71 views
0

我有一個自定義繪製的控件,我希望它的顏色匹配標準Label控件的顏色。但是,我無法確定禁用的標籤的顏色。下面的截圖顯示了三種不同背景的標籤。是否有可能獲得已禁用標籤的顏色,以便我可以在我的自定義繪圖中使用它?基於背景顏色確定禁用標籤的顏色如何?

Labels on different backgrounds

+0

我不明白的問題。你的意思是你想獲得winform標籤的禁用顏色?如果是這樣,爲什麼你添加了這個圖像?這個帖子增加了什麼? –

+0

我添加它來說明顏色實際上是由Winforms基於背景動態確定的,它不是'Label'控件本身的屬性。我想在我的自定義控件中複製此行爲。 –

回答

1

Label.OnPaint通過使用反射:

if (base.Enabled) 
{ 
    TextRenderer.DrawText(e.Graphics, this.Text, this.Font, r, nearestColor, flags); 
} 
else 
{ 
    Color foreColor = TextRenderer.DisabledTextColor(this.BackColor); 
    TextRenderer.DrawText(e.Graphics, this.Text, this.Font, r, foreColor, flags); 
} 

其中TextRenderer.DisabledTextColor

internal static Color DisabledTextColor(Color backColor) 
{ 
    Color disabledTextColor = SystemColors.ControlDark; 
    if (ControlPaint.IsDarker(backColor, SystemColors.Control)) 
    { 
     disabledTextColor = ControlPaint.Dark(backColor); 
    } 
    return disabledTextColor; 
} 
+0

我希望有一個內置的方法或屬性,我可以用來獲得「禁用」的顏色,但最終我複製了'Label.OnPaint'在我的控制中的代碼,並且它可以正常工作。謝謝! –