我在图片框中创建了一个点击拖动选择框。在图片框Paint事件处理我使用
e.Graphics.DrawRectangle(pen, rectangle);
并更新矩形并刷新鼠标移动事件处理程序中的图片框。
只要鼠标保持在右下角(即向右/底拖动),选择框看起来就很平滑。但是,如果我想将鼠标向左或向上拖动,则必须不断重新设置rectangle.X / rectangle.Y,并且框内闪烁非常明显。
有更好/更有效的方法来进行绘图吗?非常感谢!
答案 0 :(得分:1)
我刚刚找到解决方案:用pictureBox.Refresh()
替换pictureBox.Invalidate()
会使重绘顺利进行。在这种情况下,似乎Refresh()增加了巨大的开销,即使将主Form或PictureBox的DoubleBuffered属性设置为true也无济于事。
答案 1 :(得分:1)
要考虑的另一件事是DoubleBuffering
How do I enable double-buffering of a control using C# (Windows forms)?
在这里查看正确的双缓冲代码的例外答案。