当前位置: 代码迷 >> C# >> WPF编程:怎么提高画图性能
  详细解决方案

WPF编程:怎么提高画图性能

热度:90   发布时间:2016-05-05 02:38:37.0
WPF编程:如何提高画图性能?
最近在做一个WPF下画图的项目,要软实时的完成点的绘制(大概有1500~5000个点),开始的时候用POLYLINE来做,感到效果还不错,毕竟是canvas.children.add(polyline[i])这种型式,占用cpu也很小。但是要求是画点,这下就麻烦了几千个点如果采用canvas.children.add(points)可不是闹着玩的,又由于坐标轴有移动,就像画心电图一样的,感觉一下cpu占用率就上去了,当点多的时候明显感到移动在变慢。
有什么好的方法呢?
------解决思路----------------------
提高不了。你只能自己处理,不在界面上的就给画。
------解决思路----------------------
没用过 wpf  不知道
就算是单纯的绘制 5000 点 也是一瞬间的事情吧 不知道 你是要画成什么样子的
------解决思路----------------------
想不到别的方法了,只知道图形化的用C++比较好。
------解决思路----------------------
真有意思,如果是“像心电图一样的”,你觉得在x方向是那个还会有几千个点吗?那样谁看啊?

超出屏幕的polyline(包括在左边或者在右边的,反正是不可见的),不应该加入图层,已经加入的应该删除。
应该有一个抽稀参数,说明每隔多长距离进行抽稀。

你应该先做到上述两点!
------解决思路----------------------
https://social.msdn.microsoft.com/Forums/zh-CN/12224e9f-25f0-4dd3-ae7b-aa39a61727d5
回复中的3个链接,看能不能 帮到你
------解决思路----------------------
并不需要全部画完。。。一般来说1000点以内足够
------解决思路----------------------
没办法,WPF本来就很慢的
Charles Petzold以前在MSDN Magazine专门写过这方面的文章,也是在窗口中绘制若干点,只是每个点还要支持tooltip
里面讲了很多方法,很多优化
最后的结论是搞不定,只有GDI+画到位图上,然后在WPF里显示

我以前也试过,就是窗口中随机画2W(还是20W?记不清了)条线,GDI几十毫秒,GDI+几百毫秒,WPF卡十几分钟
什么Drawing2D,StreamGeometryContext,DrawingVisual都试了,并没有什么用

WPF自带的TextBox也很慢啊,显示个几兆的文本就撑不住了,卡得不要不要的

或许你可以试下openGL什么的……
反正我现在是不会用WPF做什么大量绘制的东西

------解决思路----------------------
引用:
没办法,WPF本来就很慢的
Charles Petzold以前在MSDN Magazine专门写过这方面的文章,也是在窗口中绘制若干点,只是每个点还要支持tooltip
里面讲了很多方法,很多优化
最后的结论是搞不定,只有GDI+画到位图上,然后在WPF里显示

我以前也试过,就是窗口中随机画2W(还是20W?记不清了)条线,GDI几十毫秒,GDI+几百毫秒,WPF卡十几分钟
什么Drawing2D,StreamGeometryContext,DrawingVisual都试了,并没有什么用

WPF自带的TextBox也很慢啊,显示个几兆的文本就撑不住了,卡得不要不要的

或许你可以试下openGL什么的……
反正我现在是不会用WPF做什么大量绘制的东西

的确,我之前做过一个简单的画图测试,就是不断的画圆,用GDI+非常快,而WPF的,也是Drawing2D,StreamGeometryContext,DrawingVisual都试了,CPU占用率极高,而且单位时间画出的圆的数量与GDI+根本不在一个数量级上
  相关解决方案