一、前言
有这样一个需求,在winform桌面应程序中显示的文本要有描边效果,正常Label是不带描边效果的,如下:
这个需要对Label进行拓展,最终效果如下:
本文就介绍下具体实现。
二、添加类,拓展Label描边效果
右键工程,点击菜单 添加 - 类
。
类名比如叫LabelExt
,点击添加。
代码如下:
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Drawing2D;
namespace OutlineLabelDemo
{
class LabelExt : Label
{
/// <summary>
/// 边宽
/// </summary>
public int BorderWidth { get; set; } = 1;
/// <summary>
/// 边颜色
/// </summary>
public Color BorderColor { get; set; } = Color.White;
protected override void OnPaint(PaintEventArgs e)
{
DrawText(e.Graphics);
}
private void DrawText(Graphics g)
{
g.FillRectangle(new SolidBrush(BackColor), ClientRectangle);
using (GraphicsPath gp = new GraphicsPath())
using (Pen outline = new Pen(BorderColor, BorderWidth)
{ LineJoin = LineJoin.Round })
using (StringFormat sf = new StringFormat())
using (Brush foreBrush = new SolidBrush(ForeColor))
{
gp.AddString(Text, Font.FontFamily, (int)Font.Style,
Font.Size, ClientRectangle, sf);
g.ScaleTransform(1.3f, 1.35f);
g.SmoothingMode = SmoothingMode.HighQuality;
g.DrawPath(outline, gp);
g.FillPath(foreBrush, gp);
}
}
}
}
三、重新生成解决方案
点击菜单 生成 - 重新生成解决方案
。
生成成功后,即可在工具箱中看到我们的LabelExt
了。
四、使用LabelExt
将LabelExt拖到窗口中。
编辑描边属性。
效果如下: