Frage

Ich füge dynamisch Etiketten zu Panels in meinem Code hinzu.

Ich möchte die Schriftart skizzieren, damit sie sich von der Hintergrundfarbe des Panels abheben kann.

Das Problem ist, dass ich nicht weiß, wie ich eine Gliederung für meine Schriftart oder sogar einen Schatteneffekt in C# unter Verwendung von WinForms erstellen soll.

Weiß jemand, was ich mir ansehen sollte oder kann mich in die richtige Richtung verweisen? Wenn Sie nicht verstehen, was ich meine, möchte das folgende Bild das, was ich möchte: (die äußere Auskleidung)

enter image description here

War es hilfreich?

Lösung

Ich denke, Sie müssen Ihre eigene Kontrolle malen. Hier ist ein Beispiel für a Label. Beachten Sie, dass es sich nur um eine Demo handelt.

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);                            
        }
    }
}

Sie können die Umrissfarbe durch ändern OutlineForeColor Eigenschaft können die Umrissbreite über die ändern OutlineWidth Eigentum. Wenn Sie diese Eigenschaften im Designer ändern, wird der Effekt nicht sofort angewendet (da es keinen Code gibt, ich möchte ihn kurz und einfach halten), der Effekt wird nur angewendet, wenn das Formular fokussiert ist.

Was Sie mehr hinzufügen können, ist die Zuordnung des TextAlign zum Alignment des StringFormat (genannt sf Im Code) können Sie auch einige Ereigniserhöhungsmethoden überschreiben, um mehr Kontrolle über das Erscheinungsbild zu erhöhen (z. B. um das zu ändern, um die zu ändern ForeColor Wenn die Maus über dem Etikett ist ...). Sie können sogar einen Schatteneffekt und einen Glüheffekt erzeugen (es erfordert etwas viel mehr Code).

enter image description here

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top