我有一些代码可以创建大量的形状并将形状数据设置为各种值。有些形状可能有5个形状数据行,有些形状有20个(或其他各种值)。
这是用VB.Net编写的,我想提高性能。遵循以下指南:
http://blogs.msdn.com/b/mailant/archive/2004/09/22/233082.aspx
我一直在调用.DropMany和.SetFormulas。
一个问题是我想添加大量的Shape Data行 - 虽然存在.AddShapes调用在一次点击中执行多行,但没有等效的形状数据部分 - 留下多次调用.AddNamedRow(我有尝试调用AddRows但是在与Shape Data部分一起使用时会出错。
当前算法:
Work out which masters to use for which shapes (not all the same)
pg.DropMany(with array of masters and appriate X/Y coords)
for each shape dropped:
for each shape data row (e.g. 5 - 10 times per shape):
shp.AddNamedRow()
pg.SetFormulas(for all shapes on page and all properties)
有关改善表现的其他建议吗?
答案 0 :(得分:1)
您可能尝试的一件事是在Visio应用程序对象上使用ScreenUpdating属性。设置为False时,Visio将不会更新其窗口,直到该属性再次设置为True。我之前没有使用过Visio自动化,但我已经将它与Word一起使用了,它有很多帮助。诀窍是在速度和更新频率之间找到一个很好的平衡 - 如果你关闭更新太长时间,用户可能会认为Visio已经崩溃。
答案 1 :(得分:0)
您可能还需要查看DeferRecalc,LiveDynamics,AutoLayout和UndoEnabled(Application对象的所有属性),具体取决于您的Shape数据与