Label文字颜色
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
using System.ComponentModel;
using LT.Common.Drawing;
using LT.Common.Linq;
namespace xxx
{
class HighLightLabel : Label
{
private readonly Dictionary<string, Color> textColors = new Dictionary<string, Color>()
{
{ "请", Color.Black },
{ "选择", Color.Green },
{ "或者", Color.Black },
{ "输入", Color.Green },
};
//====================================================================================================
//以上是文本颜色表
//----------------------------------------------------------------------------------------------------
//以下是重载文本属性
//====================================================================================================
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[Browsable(false)]
public override string Text
{
get
{
return textColors.Keys.ConcatText(string.Empty);
}
}
//====================================================================================================
//以上是重载文本属性
//----------------------------------------------------------------------------------------------------
//以下是重绘函数
//====================================================================================================
protected override void OnPaint(PaintEventArgs e)
{
Dictionary<int, Color> keyColor = textColors
.SelectMany(
var =>
{
int length = var.Key.Length;
Color color = var.Value;
return Enumerable.Repeat(color, length);
})
.Select((color, index) => new KeyValuePair<int, Color>(index, color))
.ToDictionary(
var => var.Key,
var => var.Value
);
ColorTextRenderer.DrawText(
e.Graphics,
this.Text,
e.ClipRectangle,
this.Font,
Color.Black,
keyColor
);
}
}
}