繁体   English   中英

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

[英]How to achieve smooth drawing with C# (like Paint .NET)?

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

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

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

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

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

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

他们可能使用WPF。 它比表单快得多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM