从.net提高Visio自动化的性能 - 创建包含大量形状和形状数据的图表

时间:2013-02-13 18:28:14

标签: .net com visio

我有一些代码可以创建大量的形状并将形状数据设置为各种值。有些形状可能有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)

有关改善表现的其他建议吗?

2 个答案:

答案 0 :(得分:1)

您可能尝试的一件事是在Visio应用程序对象上使用ScreenUpdating属性。设置为False时,Visio将不会更新其窗口,直到该属性再次设置为True。我之前没有使用过Visio自动化,但我已经将它与Word一起使用了,它有很多帮助。诀窍是在速度和更新频率之间找到一个很好的平衡 - 如果你关闭更新太长时间,用户可能会认为Visio已经崩溃。

答案 1 :(得分:0)

您可能还需要查看DeferRecalcLiveDynamicsAutoLayoutUndoEnabled(Application对象的所有属性),具体取决于您的Shape数据与