문제

내 코드의 패널에 레이블을 동적으로 추가하고 있습니다.

내가하고 싶은 것은 글꼴을 개괄하여 패널의 배경색에서 눈에 띄는 것입니다.

문제는 Winforms를 사용하여 내 글꼴에 대한 개요 또는 C#의 그림자 효과를 만드는 방법을 모른다는 것입니다.

누구든지 내가 무엇을 봐야하는지 또는 올바른 방향으로 나를 가리킬 수있는 사람이 있습니까? 내가 의미하는 바를 이해하지 못하면 다음 그림은 내가 원하는 것입니다 : (외부 안감)

enter image description here

도움이 되었습니까?

해결책

나는 당신이 자신의 컨트롤을 맞춤 페인트해야한다고 생각합니다. 다음은 다음에 대한 예입니다 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 ~로 AlignmentStringFormat (명명 된 sf 코드에서), 당신은 또한 외관과 느낌에 대한 더 많은 제어를 추가하기 위해 일부 이벤트 제기 방법을 무시할 수 있습니다 (예 : ForeColor 마우스가 레이블 위에있을 때 ...). 그림자 효과와 글로우 효과를 만들 수도 있습니다 (훨씬 더 많은 코드가 필요합니다).

enter image description here

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top