Creo que tienes que pintar a medida tu propio control. Aquí hay un ejemplo para un Label
. Tenga en cuenta que es solo una demostración, debe intentar obtener más información sobre la pintura personalizada en 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);
}
}
}
Puedes cambiar el color del contorno a través de OutlineForeColor
propiedad, puede cambiar el ancho de esquema a través del OutlineWidth
propiedad. Cuando cambia estas propiedades en el diseñador, el efecto no se aplica de inmediato (porque no hay ningún código para hacerlo, quiero mantenerlo corto y simple), el efecto se aplica solo cuando el formulario se enfoca.
Lo que puedes agregar más es mapear el TextAlign
hacia Alignment
del StringFormat
(nombrada sf
En el código), también puede anular algunos métodos de aumento de eventos para agregar más control sobre el aspecto (como para cambiar el ForeColor
Cuando el mouse está sobre la etiqueta ...). Incluso puede crear algún efecto de sombra y efecto brillo (requiere un poco más de código).