C#GDI高速绘图占用CPU高

heroxxx 2008-11-24 10:42:21
用C#绘制示波器,要求刷新率足够高,能达到10ms刷新一次的速度。

我试过用GDI绘图,当绘图区域比较大(800*600)的时候,CPU占用率达到100%,系统完全死掉了

哪位有比较好的方法处理这个问题啊(我知道Direct3D可以)?
...全文
541 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjh222 2008-11-25
  • 打赏
  • 举报
回复
C++是很强大的,为什么要用C#作这些呢
天乐 2008-11-25
  • 打赏
  • 举报
回复
双缓冲不是控件的双缓冲属性设置为true,而要你自己准备个image,先画到image上,再在控件或窗体的Paint事件里把整个image画上去。
可采取局部刷新,即重新画的时候,只修改受影响的最小矩形区域。

www.codeproject.com上面有一个开源的快速画线的c#示例,你可以去搜搜,作为参考。

不过你的需求很苛刻,实在不行也可以去上面搜索一个C++的GDI绘制动态曲线的示例,使用C++绘制,C#中调用。
heroxxx 2008-11-24
  • 打赏
  • 举报
回复
用directx固然可以,但是要求用户安装DirectX 运行库,比较麻烦
要是GDi可以解决问题的话就好了!

我在示波器程序中显示10条曲线,每条曲线包涵800个点,每次绘图时用Line方法讲这800个点绘成曲线。
系统每隔1ms采样一组数据,每10ms刷新一次绘图区域。

曾经试验过位图拷贝的方法,但是效果依然不理想!
qhdrenzhijie 2008-11-24
  • 打赏
  • 举报
回复
路过的..
heroxxx 2008-11-24
  • 打赏
  • 举报
回复
不知道有没有哪位试过GDI绘高速动态曲线的
heroxxx 2008-11-24
  • 打赏
  • 举报
回复
已经开了双缓冲了
天乐 2008-11-24
  • 打赏
  • 举报
回复
加上局部刷新
天乐 2008-11-24
  • 打赏
  • 举报
回复
加上局部刷新
天乐 2008-11-24
  • 打赏
  • 举报
回复
试试双缓冲
heroxxx 2008-11-24
  • 打赏
  • 举报
回复
没有人用gdi进行快速绘图的啊?

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧