【问题标题】:Problems changing shape's size in Visio Drawing Control (hosted in a WPF application)在 Visio 绘图控件(托管在 WPF 应用程序中)中更改形状大小的问题
【发布时间】:2025-11-23 14:15:02
【问题描述】:

我正在处理一个项目,该项目涉及在 WPF 应用程序中使用 Visio 的绘图控制。我能够托管控件并在我的应用程序中使用它,但我在调整形状大小时遇到​​了一些问题。

这就是问题所在。 在 ShapeAdded 事件处理程序中,我正在尝试使用此代码更改形状的大小

e.shape.get_CellsSRC(
    (short)Microsoft.Office.Interop.Visio.VisSectionIndices.
    visSectionObject,
    (short)Microsoft.Office.Interop.Visio.VisRowIndices.
    visRowXFormOut,
    (short)Microsoft.Office.Interop.Visio.VisCellIndices.
    visXFormHeight).set_Result("CM", height);

e.shape.get_CellsSRC(
    (short)Microsoft.Office.Interop.Visio.VisSectionIndices.
    visSectionObject,
    (short)Microsoft.Office.Interop.Visio.VisRowIndices.
    visRowXFormOut,
    (short)Microsoft.Office.Interop.Visio.VisCellIndices.
    visXFormWidth).set_Result("CM", width);

此代码似乎有效,但发生如下:

  • 绘图控件中的形状具有完全指定的宽度和高度(根据标尺)
  • 形状的高度和宽度乘以 96。

因此,如果我使用 height = width = 1,我会得到一个在纸上为 1cm * 1cm 但在其属性中显示为 96cm*96cm 的形状。 我认为这是与 WPF 的 Device Indipendent Units 有关的问题,但我不知道如何解决。

希望你能帮助我。 谢谢! 干杯。 -弗朗西斯科

【问题讨论】:

    标签: c# wpf visio


    【解决方案1】:

    问题在于标准 Visio 绘图比例(建筑),其中 3/32 英寸 = 1 英尺。 做一些数学运算得到了 96 乘数。我设法修改了绘图比例和纸张比例。

    【讨论】:

      最近更新 更多