Eu acho que você precisa pintar seu próprio controle personalizado. Aqui está um exemplo para um Label
. Observe que é apenas uma demonstração, você deve tentar descobrir mais sobre pintura personalizada no WinForms:
public class CustomLabel : Label
{
public CustomLabel()
{
OutlineForeColor = Color.Green;
OutlineWidth = 2;
}
public Color OutlineForeColor { get; set; }
public float OutlineWidth { get; set; }
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.FillRectangle(new SolidBrush(BackColor), ClientRectangle);
using (GraphicsPath gp = new GraphicsPath())
using (Pen outline = new Pen(OutlineForeColor, OutlineWidth)
{ 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);
e.Graphics.ScaleTransform(1.3f, 1.35f);
e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
e.Graphics.DrawPath(outline, gp);
e.Graphics.FillPath(foreBrush, gp);
}
}
}
Você pode alterar a cor do contorno via OutlineForeColor
propriedade, você pode alterar a largura do esboço através do OutlineWidth
propriedade. Quando você altera essas propriedades no designer, o efeito não é aplicado imediatamente (como não há nenhum código para fazer isso, quero mantê -lo curto e simples), o efeito é aplicado apenas quando o formulário é focado.
O que você pode adicionar mais é mapear o TextAlign
para o Alignment
do StringFormat
(nomeado sf
no código), você também pode substituir alguns métodos de levantamento de eventos para adicionar mais controle sobre a aparência (como mudar o ForeColor
Quando o mouse está sobre o rótulo ...). Você pode até criar algum efeito de sombra e efeito de brilho (requer um pouco mais de código).