绘图慢如何解决(300分)

M

manjel

Unregistered / Unconfirmed
GUEST, unregistred user!
我们公司的GIS是自己开发。绘图用的是GDI函数
重绘时因为图形元素比较多所以显得很慢。

我想请问是否是跳过GDI重新写这些底层的绘图函数。
还是用的 DirectX 或者说是用别的什么算法来减少图形元素.
 
X

xifengge

Unregistered / Unconfirmed
GUEST, unregistred user!
将所有元素绘在一个位图上,然后Draw在显示用的Canvas上可能会快点儿。
楼主什么公司,俺对开发GIS蛮有兴趣的[:)]
 
M

manjel

Unregistered / Unconfirmed
GUEST, unregistred user!
现在就是这么做的。但是还是慢。
我们公司只是一般。
 

新世纪

Unregistered / Unconfirmed
GUEST, unregistred user!
1.矢量图的显示,gdi是最快的;
2.图形的显示可以优化的东西比较多: 例如窗口裁剪就很重要, 显示窗口外的内容就不要绘制了;
3. 显示技术上可以使用类似memmorybitmap方案, 再使用bitBlt操作, 效果会好很多;
 
M

manjel

Unregistered / Unconfirmed
GUEST, unregistred user!
嗯。
你说的这两个办法我们这里面都有用到.
可是要绘制的图形实在太多。仍然是慢.

我在想。有一些图形会被另一个在前面的图形遮盖住。
这样底下的图就不用绘制.
但是要实现这个算法可难了。
 
D

delphilxh

Unregistered / Unconfirmed
GUEST, unregistred user!
用directx可以解决吧,游戏的图形应该不比你的少吧
 

我爱PASCAL

Unregistered / Unconfirmed
GUEST, unregistred user!
多的话少绘点就是了,绘多了人也看不过来,如果比例尺小,比如全国地图上,
你不可能把一个镇的公路画出来。
 
L

lngdtommy

Unregistered / Unconfirmed
GUEST, unregistred user!
这种东西感觉如果图元超过5000以上,使用GDI的话肯定会慢,怎么的也快不了,DX不建议使用,它对三维支持较好,但对二维的相对就差一些。
建议对于这个还是局部画的好,不用全都一次性画出来,这样对资源的损耗也会降低。。。
 
M

manjel

Unregistered / Unconfirmed
GUEST, unregistred user!
非常感谢大家这么热心.

我地装载一个省的地图时感觉特别的慢。的确是如上面的朋友说的。
每个图层都有他们的显示比例。不在显示比例下就不会重绘。
但是有一些比例下图形元素也确实是太多了。至少是十万。
实在不知道怎么整.回头我看看裁剪区能不能再
 
G

guanyue7613

Unregistered / Unconfirmed
GUEST, unregistred user!
FastLib
一套著名的免费图像处理库,支持8位和24位的位图,最大的特点就是速度奇快,缺点是代码可读性较差。
很有参考价值,建议参考一下
 
M

manjel

Unregistered / Unconfirmed
GUEST, unregistred user!
嗯。谢谢了。我想试试GDI+里面的区域和Path尽量的减少绘图.
 

Similar threads

回复
0
查看
647
不得闲
S
回复
0
查看
925
SUNSTONE的Delphi笔记
S
S
回复
0
查看
751
SUNSTONE的Delphi笔记
S
D
回复
0
查看
876
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
顶部