在我的工具中,我使用面板来更改页面。每个页面都有自己的面板,当我更改页面时,我发送带有控件的面板。在我用作画布的面板上,我有以下绘制事件:
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);
}
此方法基本上在面板周围绘制了一个漂亮的边框,因此它看起来更好。出于某种原因,当我在此面板上方移动另一个窗体时,构成边框的线开始运行一点。偶尔也会从边界绘制小线条。问题只发生在整个面板重新绘制之前的几秒钟。我能做些什么来阻止这种情况发生吗?
答案 0 :(得分:0)
ClipRectangle告诉您需要重新绘制控件的哪个部分。如果你在它上面移动一些东西,这可能是你的对象和被移动的对象的交集。您可以使用此信息更有效地重新绘制控件。
您可能希望将矩形从(0,0)绘制到(panelContent.Width-1,panelContent.Height-1)。