我在 Visual Studio .Net 中使用 C# 进行编程。
我正在创建自己的控件,它根据从模数转换器 (ADC) 获得的值绘制波形。我获取传入点并将它们转换为 X 和 Y 点,以便在我的控件中正确绘制图形。
我的 OnPaint 方法中有一个循环,它遍历所有点并在当前点和下一个点之间调用 DrawLine 方法。
但是,这是非常低效的,因为其中一些图表有 8192 个点,而系统实际上有 9 个我想同时显示的 ADC。每次重绘页面时,所有图形都需要几乎一秒钟的时间来重绘(尤其是在调试期间)。
除此之外,我还提供了一些功能,允许您放大和平移波浪以获得更好的 View (就像谷歌地图一样)并且所有 9 个波浪一起放大和平移。
所有这些功能都非常“不稳定”,因为我在 mousewheel 和 mousemove 上调用 invalidate。基本上,一切正常,但没有我想要的那么顺利。
我想知道是否有一种方法可以从数据中创建一个预绘制的对象,然后在绘图区域中绘制一个放大和平移的图片版本。
即使只是为我指明正确的方向,我们也将不胜感激。
最佳答案
创建一个 Bitmap 对象,并绘制它。
在您的 Paint 处理程序中,只需将位图 blit 到屏幕。
这将使您能够将更改比例与重新呈现数据分离开来。
关于c# - 高效使用OnPaint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1924345/