Vra

Ek is dinamies voeg Etikette te panele in my kode.

Iets wat ek wil doen, is om in staat wees om'n oorsig van die skrif so dat dit kan staan uit die agtergrond kleur van die paneel.

Die probleem is ek weet nie hoe om te skep'n raamwerk vir my skrif of selfs'n skadu-effek in C# die gebruik van Winforms.

Iemand wat weet wat ek moet kyk of kan wys my in die regte rigting?As jy nie verstaan wat ek bedoel, die volgende foto is wat ek wil graag:(die Buitenste voering)

enter image description here

Was dit nuttig?

Oplossing

Ek dink jy het om persoonlike verf jou eie beheer.Hier is'n voorbeeld vir'n Label.Let daarop dat dit is net'n demo, moet jy probeer om uit te vind meer oor persoonlike skildery 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);                            
        }
    }
}

Jy kan dit verander die uiteensetting kleur via OutlineForeColor eiendom, jy kan verander die uiteensetting breedte via die OutlineWidth die eiendom.Wanneer jy hierdie eienskappe in die ontwerper, die effek is nie onmiddellik toegepas nie (want daar is nie enige kode om dit te doen, ek wil om te hou dit kort en eenvoudig), die effek is slegs van toepassing wanneer die vorm is gefokus.

Wat jy kan voeg meer is die kartering van die TextAlign om die Alignment van die StringFormat (naam sf in die kode), jy kan ook ignoreer sommige gebeurtenis verhoging van metodes te voeg meer beheer oor die voorkoms en gevoel (soos om te verander die ForeColor wanneer die muis oor die etiket...).Jy kan selfs'n paar skadu-effek en die gloed effek (dit vereis'n bietjie baie meer-kode).

enter image description here

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top