W
Wysywyg
Unregistered / Unconfirmed
GUEST, unregistred user!
最近我做了一个矢量图的控件,别的功能都行就是在LOAD和CLEAR图形
时较慢.因为我让每个图形对象对应一个TGRAPHICCONTROL继承下来的
对象,当图形对象太多时,创建(Create,SetBounds)、放大(SetBounds)和
清除(Destroy)这些对象就特慢.就其原因,是这三个过程都会调用
Parent.AlignControl. 这样,每增加、删除、改动一个对象就会自动
把所有一生成的对象Align一遍,算法复杂度是O(n^2).
我的这个控件恰好不需要这种Align功能.因此我就改了Controls.Pas,
把RequestAlign等方法注释掉了.并且在使用这个控件的程序中把Project|Options|Search Path置为$(DELPHI)/Source/VCL,
这样每次执行前用Build,把十几万行原码重编.问题就解决了,速度提高20倍.
可问题又来了,我的程序主窗体的很多控件是要Align的,否则就会乱.
有没有两全其美的办法呢?比如,矢量图控件用改后的Controls.Pas,
正常程序用以前的lib/controls.dcu?
万分焦急的盼望各位高人的指点!
时较慢.因为我让每个图形对象对应一个TGRAPHICCONTROL继承下来的
对象,当图形对象太多时,创建(Create,SetBounds)、放大(SetBounds)和
清除(Destroy)这些对象就特慢.就其原因,是这三个过程都会调用
Parent.AlignControl. 这样,每增加、删除、改动一个对象就会自动
把所有一生成的对象Align一遍,算法复杂度是O(n^2).
我的这个控件恰好不需要这种Align功能.因此我就改了Controls.Pas,
把RequestAlign等方法注释掉了.并且在使用这个控件的程序中把Project|Options|Search Path置为$(DELPHI)/Source/VCL,
这样每次执行前用Build,把十几万行原码重编.问题就解决了,速度提高20倍.
可问题又来了,我的程序主窗体的很多控件是要Align的,否则就会乱.
有没有两全其美的办法呢?比如,矢量图控件用改后的Controls.Pas,
正常程序用以前的lib/controls.dcu?
万分焦急的盼望各位高人的指点!