2

我有一些代码可以创建潜在的大量形状并将形状数据设置为各种值。一些形状可能有 5 个形状数据行,以及一些 20(或各种其他值)。

这是用 VB.Net 编写的,我想提高性能。遵循此处的指南:

http://blogs.msdn.com/b/mailant/archive/2004/09/22/233082.aspx

我一直在查看对 .DropMany 和 .SetFormulas 的调用。

一个问题是我想添加大量的形状数据行 - 虽然存在一个 .AddShapes 调用来一次执行多行,但形状数据部分没有等效项 - 留下多次调用 .AddNamedRow (我已经尝试调用AddRows 但与形状数据部分一起使用时会出错)。

当前算法:

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)

还有其他提高性能的建议吗?

4

2 回答 2

2

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

于 2013-02-13T18:43:35.517 回答
0

您可能还想查看DeferRecalcLiveDynamicsAutoLayoutUndoEnabled(应用程序对象的所有属性),具体取决于您的形状数据所绑定的内容。

于 2013-02-18T14:46:05.860 回答