gpt4 book ai didi

layout - 如何 : Visio SDK page Re-Layout FlowChart Top to Bottom

转载 作者:行者123 更新时间:2023-12-04 05:45:46 29 4
gpt4 key购买 nike

我正在从代表流程图的分层数据集创建动态 VSD。我不想/不需要摆弄这些元素的绝对定位 - 自动布局选项会很好地工作。

问题是我不知道如何通过代码执行这个命令。在 UI (Visio 2010) 中,命令位于此处的功能区上:设计(选项卡)-> 布局(组)-> 重新布局(拆分按钮)。

这些中的任何一个都可以。浏览 Visio SDK 文档和谷歌搜索了几天没有发现任何有用的东西。

有任何想法吗? (使用 C#,但 VB/VBA 可以)

最佳答案

Page.Layout() 方法本身是不够的。

在 WBSTreeView.sln 示例项目 (VB.Net) 中,我找到了如何完成此操作,但直到 8 小时后才能发布我的答案:-x

通过查看下面使用的枚举,可以使用其他布局类型。
Compact -> DownRight 对于我们正在创建的大多数流程来说最终变得更好。

翻译成 C#:

        // auto-layout, Compact Tree -> Down then Right
var layoutCell = this._page.PageSheet.get_CellsSRC(
(short)VisSectionIndices.visSectionObject,
(short)VisRowIndices.visRowPageLayout,
(short)VisCellIndices.visPLOPlaceStyle);
layoutCell.set_Result(
VisUnitCodes.visPageUnits,
(short)VisCellVals.visPLOPlaceCompactDownRight);
layoutCell = this._page.PageSheet.get_CellsSRC(
(short)VisSectionIndices.visSectionObject,
(short)VisRowIndices.visRowPageLayout,
(short)VisCellIndices.visPLORouteStyle);
layoutCell.set_Result(
VisUnitCodes.visPageUnits,
(short)VisCellVals.visLORouteFlowchartNS);

//// to change page orientation
//layoutCell = this._page.PageSheet.get_CellsSRC(
// (short)VisSectionIndices.visSectionObject,
// (short)VisRowIndices.visRowPrintProperties,
// (short)VisCellIndices.visPrintPropertiesPageOrientation);
//layoutCell.set_Result(
// VisUnitCodes.visPageUnits,
// (short)VisCellVals.visPPOLandscape);

// curved connector lines
layoutCell = this._page.PageSheet.get_CellsSRC(
(short)VisSectionIndices.visSectionObject,
(short)VisRowIndices.visRowPageLayout,
(short)VisCellIndices.visPLOLineRouteExt);
layoutCell.set_Result(
VisUnitCodes.visPageUnits,
(short)VisCellVals.visLORouteExtNURBS);


// perform the layout
this._page.Layout();
// optionally resize the page to fit the space taken by its shapes
this._page.ResizeToFitContents();
//

更改连接器线颜色

如果您不熟悉颜色公式的工作原理,这也可能非常令人沮丧。 By default您可以将 int 作为字符串提供以获得预定义的颜色,但这并不是很有帮助,因为没有一种简单的方法可以找出每种颜色是什么。 (有一个 Page.Colors 集合,但您必须检查它们的每个 RGB 值并从中找出颜色。)

相反,您可以为公式使用自己的 RGB 值。
    private void SetConnectorLineColor(Shape connector, string colorFormula)
{
var cell = connector.get_Cells("LineColor");
cell.Formula = colorFormula;
}

internal static class AnswerColorFormula
{
public static string Green = "RGB(0,200,0)";
public static string Orange = "RGB(255,100,0)";
public static string Yellow = "RGB(255,200,0)";
public static string Red = "RGB(255,5,5)";
}

关于layout - 如何 : Visio SDK page Re-Layout FlowChart Top to Bottom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10709485/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com