Penso che devi dipingere personalizzato il tuo controllo. Ecco un esempio per un Label
. Nota che è solo una demo, dovresti provare a saperne di più sulla pittura personalizzata in 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);
}
}
}
Puoi cambiare il colore del contorno tramite OutlineForeColor
proprietà, puoi modificare la larghezza del profilo tramite il OutlineWidth
proprietà. Quando si modificano queste proprietà nel progettista, l'effetto non viene applicato immediatamente (poiché non esiste alcun codice per farlo, voglio mantenerlo breve e semplice), l'effetto viene applicato solo quando il modulo è focalizzato.
Quello che puoi aggiungere di più è mappare il TextAlign
al Alignment
del StringFormat
(di nome sf
Nel codice), puoi anche sovrascrivere alcuni metodi di raccolta di eventi per aggiungere più controllo sull'aspetto (come per cambiare il ForeColor
Quando il mouse è sopra l'etichetta ...). Puoi anche creare un po 'di effetto ombra ed effetto luminoso (richiede un po' più di codice).