如何提高画图速度

xue780616 2004-08-29 03:48:59
我做了一个画图组件,每一个图元就是一个对象,但是这样出现了问题,当画的东西成千上万时
整个图层的刷新速度会明显的变慢。在一般情况下,满足用户的需求没有问题,可是有些示意图
上的图元实在太多,有的达到5000多个,我不知道怎么把画图速度再提高。我试验过,循环调用
画图函数本身不是问题,问题在于不能将函数置于每个对象中,循环调用对象的画图方法,对象的引入
降低了刷新速度。
本来我是可以使用GIS平台解决这个问题的,但是我们选择的GIS平台提供的图元类型太少,用起来不灵活。
我不知道这些GIS平台是怎么做的,它们绝对不是把每个图元都当作对象来处理的,而是把处于同一层的
所有图元画到一张内存位图里(我只是猜测),可是放大和缩小时,这些图元难道不需要重画吗?
几万十几万的图元画起来刷新起来那么快。我在画图时为了加快速度也使用了内存位图,但是在放大和缩小、偏移以及图元的选中和不选中时
需要重新刷新这张内存位图,这个刷新过程因为图元太多而变慢,我也使用了另一项技术加快刷新速度,就是只画当前可显示在屏幕中的图元,
这样当用户放大示意图时,当前显示的图元少了,刷新速度就快了,不过当五千个图元都显示时,我就没有办法了,速度太慢。
...全文
129 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
painache 2004-08-30
  • 打赏
  • 举报
回复
楼主用的是什么图形接口?

GDI是很慢的,换DIRECTX或者OPENGL试试
VirtualAlloc 2004-08-30
  • 打赏
  • 举报
回复
可不可以将用户看不到的区域先不显示(即不处理),而仅仅处理当前用户看到的区域。这样图元就不会太多了吧
BlueBeer 2004-08-29
  • 打赏
  • 举报
回复
多看看zyl910的代码吧

http://www.aivisoft.net/Zyl910/

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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