有效使用OnPaint

Eat*_*aco 2 .net c# graphics onpaint

我在Visual Studio .Net中编程并使用C#.

我正在创建自己的控件,根据从模数转换器(ADC)获得的值来绘制波形.我将传入点转换为X和Y点,以便在我的控制中正确绘制图形.

我的OnPaint方法中有一个循环遍历所有点并在当前点和下一个点之间调用DrawLine方法.

然而,这是非常低效的,因为这些图中的一些具有8192个点并且系统实际上具有我想要同时显示的九个ADC.每次页面重绘时,所有图形重绘都需要几乎一秒钟(特别是在调试期间).

最重要的是,我有一些功能,允许你放大和平移波浪以获得更好的视图(行为很像谷歌地图)和所有9波放大和平移.

所有这些功能都非常"生涩",因为我在mousewheel和mousemove上调用invalidate.基本上,这一切都有效但不如我想的那么顺利.

我想知道是否有办法从数据中创建预绘制对象,然后在绘图区域中绘制图片的扩张和翻译版本.

即使它只是指向正确的方向,任何帮助将不胜感激.

Ano*_*on. 6

创建一个Bitmap对象,并绘制到该对象.

在Paint处理程序中,只需将Bitmap blit到屏幕即可.

这将允许您从重新渲染数据中分离更改比例.