0

我有一个 winforms 应用程序,我使用以下类放置了自己的自定义标签

public class LabelWithBorder : Label
{
    protected override void OnPaint(PaintEventArgs e)
    {
        ColorMe(e);
    }

    private void ColorMe(PaintEventArgs e)
    {
        Color myColor = Color.FromArgb(104, 195, 198);
        Pen myPen = new Pen(myColor, 1);
        e.Graphics.DrawRectangle(myPen,
        e.ClipRectangle.Left,
        e.ClipRectangle.Top,
        e.ClipRectangle.Width - 1,
        e.ClipRectangle.Height - 1);
        base.OnPaint(e);
    } 
}

生成的 LabelWithBorder 仅具有与我的客户自己的文献/网站等相匹配的颜色边框。下图(左侧)显示了它应该/最初的样子。但是我遇到的问题是,每当一个窗口被拖到另一个窗口上时,标签就会根据右侧的图片变形。

带边框的标签

任何人都可以建议导致这种失真的原因以及我应该如何纠正它。

4

2 回答 2

1

这有效,代码很简单:

private Color myColor = Color.FromArgb(104, 195, 198);
protected override void OnPaint(PaintEventArgs e)
{
    ControlPaint.DrawBorder(e.Graphics, ClientRectangle, myColor, ButtonBorderStyle.Solid);
    base.OnPaint(e);
}
于 2012-05-02T08:50:54.913 回答
0

尝试使用双缓冲,如下所示: https ://web.archive.org/web/20140811193726/http://bobpowell.net/doublebuffer.aspx

于 2012-05-02T08:29:19.463 回答