请问一下关于GDI+,direct,opengl绘图效率的问题

zhengdaolin 2009-03-03 09:49:52
我需要画的是平面图
图形基本上都是由线段组合而成的
但是数据量比较大,一般一次绘图需要涉及到10000根线段
现在用GDI+做的,比较慢,大概需要1秒左右的时间才能绘制完成
请问如果用direct或者opengl的话,大概能快多少?
谢谢
...全文
742 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
chen2009zhou 2011-09-10
  • 打赏
  • 举报
回复
路过,来学习学习······
zhengdaolin 2009-03-05
  • 打赏
  • 举报
回复
用direct3d试了一下,比gdi+快了不少,不过还是觉得有点慢
数据量大概是8万条线,d3d画一次大概需要0.5-1秒的时间,gdi+花的时间就要长的多。
opengl还没试过,不知道和d3d比起来速度如何。
北京的雾霾天 2009-03-03
  • 打赏
  • 举报
回复
图形的放大,缩小,平移也没有关系。像AutoCAD这样的软件复杂吧,不也挺快。
画最少的部分、一次性显示出画好的图是个基本的做法。做好了效果就出来了。
zhengdaolin 2009-03-03
  • 打赏
  • 举报
回复
doublebuffer已经在用了
优化的话,如果我的图形需要放大,缩小,平移,你说的这种优化就比较难以实现了。
[Quote=引用 6 楼 hbxtlhx 的回复:]
是显示的慢还是画图就慢?

如果显示的慢可以使用控件.DoubleBuffered = true;
如果是画的慢,考虑下优化,比如只画无效的一部分,或是保存画好的图等。
[/Quote]
北京的雾霾天 2009-03-03
  • 打赏
  • 举报
回复
是显示的慢还是画图就慢?

如果显示的慢可以使用控件.DoubleBuffered = true;
如果是画的慢,考虑下优化,比如只画无效的一部分,或是保存画好的图等。
zhengdaolin 2009-03-03
  • 打赏
  • 举报
回复
我现在就是先画在Bitmap上的
[Quote=引用 4 楼 tweeger 的回复:]
引用楼主 zhengdaolin 的帖子:
我需要画的是平面图
图形基本上都是由线段组合而成的
但是数据量比较大,一般一次绘图需要涉及到10000根线段
现在用GDI+做的,比较慢,大概需要1秒左右的时间才能绘制完成
请问如果用direct或者opengl的话,大概能快多少?
谢谢

如果数据量比较大可以先在后台把图画出来,比如可以先画在Bitmap上,然后再把它贴出来。
我是想说lz可以先考虑是否有别的变通的办法可以解决,不宜直…
[/Quote]
tweeger 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhengdaolin 的帖子:]
我需要画的是平面图
图形基本上都是由线段组合而成的
但是数据量比较大,一般一次绘图需要涉及到10000根线段
现在用GDI+做的,比较慢,大概需要1秒左右的时间才能绘制完成
请问如果用direct或者opengl的话,大概能快多少?
谢谢
[/Quote]
如果数据量比较大可以先在后台把图画出来,比如可以先画在Bitmap上,然后再把它贴出来。
我是想说lz可以先考虑是否有别的变通的办法可以解决,不宜直接替换开发平台;
delphi_new 2009-03-03
  • 打赏
  • 举报
回复
没研究过
jack20my 2009-03-03
  • 打赏
  • 举报
回复
能块多少不太清楚,用GDI+速度非常慢,让人无法忍受
Cherishny 2009-03-03
  • 打赏
  • 举报
回复
UP
zhengdaolin 2009-03-03
  • 打赏
  • 举报
回复
我就是不知道autocad是用什么东西绘图的啊
另外,如果画面上有10000根线,这个时候我需要缩小画面
那么肯定是要全部重绘的咯?


[Quote=引用 8 楼 hbxtlhx 的回复:]
图形的放大,缩小,平移也没有关系。像AutoCAD这样的软件复杂吧,不也挺快。
画最少的部分、一次性显示出画好的图是个基本的做法。做好了效果就出来了。
[/Quote]

111,098

社区成员

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

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

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