Я думаю, что вы должны настраивать свой собственный контроль. Вот пример для Label
. Анкет Обратите внимание, что это всего лишь демонстрация, вы должны попробовать узнать больше на пользовательской живописи в 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);
}
}
}
Вы можете изменить контур цвета через OutlineForeColor
свойство, вы можете изменить ширину схемы через OutlineWidth
имущество. Когда вы меняете эти свойства в дизайнере, эффект не применяется немедленно (поскольку для этого нет никакого кода, я хочу сохранить его коротким и простым), эффект применяется только тогда, когда форма сосредоточена.
То, что вы можете добавить больше, это на картирование TextAlign
в Alignment
принадлежащий StringFormat
(назван sf
в коде) вы также можете переопределить некоторые методы повышения событий, чтобы добавить больше контроля над внешним видом (например, чтобы изменить ForeColor
Когда мышь через этикетку ...). Вы даже можете создать некоторый эффект тени и эффект свечения (для этого требуется немного больше кода).