社区
C#
帖子详情
C#GDI高速绘图占用CPU高
heroxxx
2008-11-24 10:42:21
用C#绘制示波器,要求刷新率足够高,能达到10ms刷新一次的速度。
我试过用GDI绘图,当绘图区域比较大(800*600)的时候,CPU占用率达到100%,系统完全死掉了
哪位有比较好的方法处理这个问题啊(我知道Direct3D可以)?
...全文
541
10
打赏
收藏
C#GDI高速绘图占用CPU高
用C#绘制示波器,要求刷新率足够高,能达到10ms刷新一次的速度。 我试过用GDI绘图,当绘图区域比较大(800*600)的时候,CPU占用率达到100%,系统完全死掉了 哪位有比较好的方法处理这个问题啊(我知道Direct3D可以)?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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进行快速绘图的啊?
5种语言写的共计8种方式的图形动画程序性能对比
以上代码都是采用DBB双缓冲方式测试.都在win32平台运行,其中基于qt开发的程序尚未在linux上编译测试. qt 优势,跨平台,性能难度平衡的不错;缺点:运行速度需要提升.
C#
优势,开发速度快;缺点:慢,庞大,臃肿. MFC,优势,运行速度一流,内存
占用
小.缺点,开发较复杂 DELPHI给我的感觉是速度仅次于MFC和QT VB在调用API之后速度猛升,仅次于DELPHI SDK的不作讨论,MFC接近之. 综上调用API之后都差不多的速度....但是
CPU
占用
是不同的.以此可以看出"胶合层"的厚度. 最后排名 sdk(理论上,呵呵无敌的) qt(这家伙底层貌似用了多核技术,帧数最
高
) mfc(多核支持啊...多核支持...) delphi vb
C#
帧数计算采用单独的timer,因此不影响fps. http://blog.csdn.net/kkun/archive/2010/04/27/5532881.aspx
C#
使用
gdi
绘制
cpu
占用
高
的问题以及闪烁问题的解决方案
1.问题一,当我们直接在form上连续绘制会出现闪烁的情况! 解决方案:启用窗体的双缓冲设置 this.DoubleBuffered = true;或者在构造函数中添加代码以下代码即可: this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint | ...
C#
之
高
级进阶
从急速入门到面向对象,课程是否为你打开了新世界的大门呢,
C#
高
级课程来了,各种
高
阶知识点,干货噻到爆。 开启你的大神之路吧,同学~
C#
语言系列课程分为一下几个部分: 1.
C#
急速入门  ...
C#
GDI
高
效
绘图
(转载)
双缓冲技术双缓冲是将图片在显示到DC前,现在要内存建一个DC,也就是用于存储这张图片的内存区,然后在将这部分update到你要显示的地方这样,可以防止画面抖动很大这样和你说吧,如果要实现你要的效果,你必须用指针访问内存比如,把程序声明成unsafe的,然后按照上面的操作进行 this.clear(this.BackColor)不行的 invalidate(),闪的厉害 所以不行 我再来详细解释一下刚
利用
GDI
+的双缓冲技术来提
高
绘图
效率
专栏作品利用
GDI
+的双缓冲技术来提
高
绘图
效率卢彦 前言进入.NET时代,Windows的
绘图
技术也从
GDI
升级到了
GDI
+,从名字就能知道
GDI
+是对以前传统
GDI
绘图
技术的一次升级,不过在微软几乎把所有的新技术都冠之.NET的情况下,
GDI
+竟然不叫做
GDI
.NET,还真让我感到有点意外了。 :)
GDI
+在一种与设备无关的环境下提供了一套统一的
绘图
编程模型,极大
C#
110,533
社区成员
642,574
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章