c# - Visio 中的形状连接器

标签 c# coordinates visio shapes connector

我正在使用 C# 在 Studio 2010 中编写 Visio 2010 的加载项。我需要阅读当前在 Visio 中打开的图表。我知道如何阅读图表的形状。

问题是

  1. 如果我有一个形状对象,哪些属性可以给我页面上的形状和其他形状(如果有的话)的坐标,当前的形状与之相连,
  2. 如果我有一个连接器对象,哪些属性可以为我提供它连接的形状和连接方向。

最佳答案

Visio 中的连接是通过连接对象处理的。每个形状都有一个传入连接对象和传出连接对象的集合。它们的名称分别是 FromConnects 和 Connects。

每个连接对象都有一个 FromSheet 和 ToSheet 属性,它们只是指向 Shape 对象的指针,FromSheet 形状是连接到 ToSheet 形状的形状。

因此,如果您有一个方形 (shape1) 通过连接线 (connector) 连接到另一个方形 (shape2),您实际拥有的是: 连接器连接到 shape1 连接器连接到 shape2

所以在 shape1 上,您将查看 FromConnects 并看到一个 Connects 项,其中 FromSheet 引用连接器,ToSheet 引用 shape1。 形状 2 将是相同的。 如果您查看连接器形状上的连接,您会看到相同的连接项目,引用相同的对象。

因此,要确定 shape1 是否连接到 shape2 或反之亦然,就是查看连接器上的顺序...连接对象 1 将是“从”形状,连接对象 2 将是“到”形状。

这里有两个 VBA 例程,它们在您传入的形状上获取传入和传出粘附,并返回一个集合对象。我知道您说您使用的是 C#,但我为 Visio 使用 VBA。该代码仅说明原始连接信息。我建议您尝试在 VBA 中四处走动,看看这一切是如何工作的,因为它仍然让我感到困惑。

Public Function GetShapesThatConnectTo(TheShp As Visio.Shape) As Collection
    Dim Result As Collection
    Set Result = New Collection
    For i = 1 To TheShp.FromConnects.Count
        Result.Add TheShp.FromConnects.Item(i).FromSheet
    Next i
    Set GetShapesThatConnectTo = Result
End Function

Public Function GetWhatShapeConnectsTo(TheShp As Visio.Shape) As Collection
    Dim Result As Collection
    Set Result = New Collection
    For i = 1 To TheShp.Connects.Count
        Result.Add TheShp.Connects.Item(i).ToSheet
    Next i
    Set GetWhatShapeConnectsTo = Result
End Function

关于c# - Visio 中的形状连接器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6456831/

相关文章:

vba - Visio VBA : How to register to mouse double click event on a shape in VB code

c# - 如何阻止 GridView 中的特定列

C# 将位转换为 bool 值

c# - 如何测试WPF表单?

php - 给定用户的位置,选择在其半径范围内包含该用户的行

node.js - Mapbox gl原生拼接间距大于0的瓷砖

c# - Visio 形状 - 获取 X、Y 位置

c# - 将 TabControl 附加到 MDI 父窗体而不是工具条

java - Java 中查找 DOM 元素绝对位置的代码

在 Visio 中使用的 Spring Integration Images