如何根据背景颜色确定禁用标签的颜色?
How is the color of a disabled label determined based on the background color?
我有一个自定义绘制的控件,我希望它的颜色与标准 Label
控件的颜色相匹配。但是,我无法确定 disabled 标签的颜色。下面的屏幕截图显示了具有三种不同背景的标签。是否可以获得绘制 Disabled 标签的颜色,以便我可以在我的自定义绘图中使用它?
来自 Label.OnPaint
使用 Reflector:
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
控件的颜色相匹配。但是,我无法确定 disabled 标签的颜色。下面的屏幕截图显示了具有三种不同背景的标签。是否可以获得绘制 Disabled 标签的颜色,以便我可以在我的自定义绘图中使用它?
来自 Label.OnPaint
使用 Reflector:
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;
}