4

Visio VBA 中有没有办法查看 Visio 中的形状前面或后面是否有形状?

我想我可以写一些东西来检查页面中每个形状的边界框,看看它是否占据了与我的形状相同的空间。我宁愿使用内置的东西,因为随着绘图的形状越来越多,检查每个形状可能需要很长时间。

4

1 回答 1

4

Shape.SpatialRelation 属性将告诉您两个形状是否接触。Shape.Index 属性将告诉您在 z 顺序中哪个在前面或后面。

这是一个简单的例子:

Public Sub DoShapesIntersect(ByRef shape1 As Visio.Shape, ByRef shape2 As Visio.Shape)

    '// do they touch?
    If (shape1.SpatialRelation(shape2, 0, 0) <> 0) Then

        '// they touch, which one is in front?
        If (shape1.Index > shape2.Index) Then
            Debug.Print shape1.Name + " is in front of " + shape2.Name
        Else
            Debug.Print shape1.Name + " is behind " + shape2.Name
        End If
    Else
        Debug.Print "shape1 and shape2 do not touch"
    End If

End Sub

在这里阅读更多:

MSDN 上的 Shape.SpatialRelation 属性

于 2008-09-30T20:30:03.657 回答