在Visio绘图控件中更改形状大小的问题(托管在WPF应用程序中)

时间:2011-12-07 15:36:15

标签: c# wpf visio

我正在开发一个项目,该项目涉及在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设备独立单元相关的问题,但我不知道如何解决。

希望你能帮助我。 谢谢! 干杯。 -Francesco

1 个答案:

答案 0 :(得分:0)

问题是标准的Visio绘图比例(架构),其中3/32英寸= 1英尺。 做一些数学计算得出了96倍的乘数。我管理修改了绘图比例和纸张比例。