0
我有一個自定義繪製的控件,我希望它的顏色匹配標準Label
控件的顏色。但是,我無法確定禁用的標籤的顏色。下面的截圖顯示了三種不同背景的標籤。是否有可能獲得已禁用標籤的顏色,以便我可以在我的自定義繪圖中使用它?基於背景顏色確定禁用標籤的顏色如何?
我有一個自定義繪製的控件,我希望它的顏色匹配標準Label
控件的顏色。但是,我無法確定禁用的標籤的顏色。下面的截圖顯示了三種不同背景的標籤。是否有可能獲得已禁用標籤的顏色,以便我可以在我的自定義繪圖中使用它?基於背景顏色確定禁用標籤的顏色如何?
從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;
}
我希望有一個內置的方法或屬性,我可以用來獲得「禁用」的顏色,但最終我複製了'Label.OnPaint'在我的控制中的代碼,並且它可以正常工作。謝謝! –
我不明白的問題。你的意思是你想獲得winform標籤的禁用顏色?如果是這樣,爲什麼你添加了這個圖像?這個帖子增加了什麼? –
我添加它來說明顏色實際上是由Winforms基於背景動態確定的,它不是'Label'控件本身的屬性。我想在我的自定義控件中複製此行爲。 –