Je pense que vous devez peindre sur mesure votre propre contrôle. Voici un exemple pour un Label
. Notez que c'est juste une démo, vous devriez essayer d'en savoir plus sur la peinture personnalisée dans 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);
}
}
}
Vous pouvez modifier la couleur de contour via OutlineForeColor
propriété, vous pouvez modifier la largeur de contour via le OutlineWidth
propriété. Lorsque vous modifiez ces propriétés dans le concepteur, l'effet n'est pas appliqué immédiatement (car il n'y a pas de code pour le faire, je veux le garder court et simple), l'effet n'est appliqué que lorsque le formulaire est focalisé.
Ce que vous pouvez ajouter plus, c'est de cartographier le TextAlign
au Alignment
de la StringFormat
(nommé sf
Dans le code), vous pouvez également remplacer certaines méthodes d'élévation pour ajouter plus de contrôle sur l'apparence (comme pour modifier le ForeColor
Lorsque la souris est sur l'étiquette ...). Vous pouvez même créer un effet d'ombre et un effet brillant (il nécessite un peu plus de code).