0

在我的工具中,我使用面板来更改页面。每个页面都有自己的面板,当我更改页面时,我会发送带有控件的面板。在我用作画布的面板上,我有以下绘制事件:

    private void panelContent_Paint(object sender, PaintEventArgs e)
    {
        e.Graphics.CompositingQuality = CompositingQuality.HighQuality;
        e.Graphics.SmoothingMode = SmoothingMode.HighQuality;

        // Paints a border around the panel to match the treeview control
        e.Graphics.DrawRectangle(Pens.CornflowerBlue,
            e.ClipRectangle.Left,
            e.ClipRectangle.Top,
            e.ClipRectangle.Width - 1,
            e.ClipRectangle.Height - 1);

        e.Graphics.Flush();

        base.OnPaint(e);
    }

这种方法基本上在面板周围绘制了一个漂亮的边框,因此看起来更好。出于某种原因,当我在此面板上方移动另一个表单时,构成边框的线条开始运行一点。偶尔也会从边框画出细线。该问题仅在整个面板重新绘制之前发生几秒钟。我能做些什么来防止这种情况发生吗?

4

1 回答 1

0

ClipRectangle 告诉您控件的哪一部分需要重新绘制。如果你在上面移动一些东西,这可能是你的对象和被移动对象的交集。您可以使用此信息更有效地重绘控件。

您可能希望将矩形从 (0, 0) 绘制到 (panelContent.Width-1, panelContent.Height-1)。

于 2010-02-16T21:08:13.763 回答