在某些情况下绘边框运行

时间:2010-02-16 20:13:02

标签: c# graphics drawrectangle

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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