我有一个自定义绘制的控件,我希望它的颜色与标准Label
控件的颜色相匹配。但是,我无法确定已禁用标签的颜色。下面的屏幕截图显示了具有三种不同背景的标签。是否可以获取绘制 Disabled 标签的颜色,以便我可以在自定义绘图中使用它?
答案 0 :(得分:1)
使用Reflector从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;
}