如何用C#实现平滑绘图(如Paint .NET)?

时间:2012-02-07 17:32:01

标签: c# drawing mousemove

Paint .NET如何使用C#快速绘制?示例:在拖动鼠标时没有任何可见延迟的情况下绘制椭圆周长。在C#中使用简单的Windows窗体应用程序如果使用Picturebox的MouseMove事件并根据鼠标位置绘制一个椭圆,则会有很多延迟和闪烁!那么,他们如何顺利地做到这一点?

4 个答案:

答案 0 :(得分:4)

我对Paint.Net代码没有特别的了解,但很可能是使用Double Buffering,并且可能是在自定义绘图表面上手动实现,而不是预打包控件中的简单实现。

答案 1 :(得分:4)

Paint.NET在调用Invalidate()后调用Update(),强制立即同步WM_PAINT。

答案 2 :(得分:2)

要获得平滑的绘图,您应该:

  • 使用双缓冲(http://msdn.microsoft.com/en-us/library/b367a457.aspx)
  • 使用专用工具包进行渲染(OpenGL / DirectDraw等)

在这种情况下,最好的方法是使用双缓冲 - 它支持.NET框架中的“开箱即用”,只需要很少的工作,并且可以消除闪烁。

答案 3 :(得分:0)

他们可能使用WPF。它比形式快得多。