Shape.DrawSpline 方法 (Visio)

创建一个新建形状,其路径沿着给定的点序列。

语法

expression. DrawSpline( _xyArray()_ , _Tolerance_ , _Flags_ )

expression 一个代表 Shape 对象的变量。

参数

名称 必需/可选 数据类型 说明
xyArray () 必需 Double 一个交替出现 xy 值的数组,这些值定义新建形状路径中的点。
Tolerance 必需 Double 新建形状的路径必须接近于给定点的程度。
Flags 必需 Integer 影响形状绘制方式的标志。

返回值

Shape

说明

DrawSpline 方法创建一个新建形状,其路径在一组给定点的给定公差范围内。 要与给定点完全吻合,请指定公差为零 (0)。 通常,DrawSpline 方法会使样条线段与这些点吻合,但有时也会在新建形状中生成线条或圆弧线段。

控制点和公差以在其中创建新建形状的页面、主控形状或组的坐标空间的内部绘图单位(英寸)表示。 传递的数组应该是 SAFEARRAY 类型的由引用 (VT_R8|VT_ARRAY|VT_BYREF) 传递的 8 字节浮点值。 这是 Microsoft Visual Basic 向自动对象传递数组的方式。

从这些点到结果形状路径的误差大致在公差范围之内。 点数很多时,实际的误差有时可能会超出指定的公差。

Flags 参数是一个位掩码,指定用于绘制新建形状的选项。 此参数的值应为零或下面一个或多个值的组合。

常量
visSplinePeriodic 1 (&H1)
visSplineDoCircles 2 (&H2)
visSplineAbrupt 4 (&H4)
visSpline1D 8 (&H8)

如果 Flags 包括 visSplinePeriodic 且满足下列条件,应用程序将尝试绘制一个周期性样条。 否则,Visio 将绘制一个非周期性样条:

  • 最后一个点必须与第一个点重叠。

  • 如果还包含标志 visSplineAbrupt,则由这些点勾勒出的整个封闭路径不得在方向和曲度上有突然变化。

如果 Flags 包括 visSplineDoCircles,则 Microsoft Visio 识别一组给定点中的圆弓形,并为这些圆弓形生成圆弧而不是样条行。

如果 Flags 包括 visSplineAbrupt,则每当在点的尾部检测到方向或曲度发生了突然变化时,Visio 将断开样条。 对于列表中三个连续的点 A、B、C,如果点 B 和线段 AC 之间的距离大于两倍的公差,则认为方向发生突然变化。 如果线段 AB 或 BC 中一条线段的长度超过另一条的两倍,则应用程序也认为点 B 发生了突然变化。 在检测到发生了突然变化的点上,应用程序会结束当前段(线条、弧或样条)并开始一个新段。

如果 Flags 包括 visSpline1DxyArray () 中的第一个和最后一个点不一致, 则 DrawSpline 方法将生成具有一维 (1D) 行为的形状,否则将生成具有二维 (2D) 行为的形状。

如果 xyArray() 中的第一个点和最后一个点重合,则 DrawSpline 方法生成填充形状。

示例

以下示例显示如何绘制一个通过五个任意点的周期性样条,同时要求样条与各个点之间的距离在 0.25(绘图)英寸范围内。 该示例允许 Visio 在新建形状的路径上发生突然变化的点处开始新段。

 
Public Sub DrawSpline_Example() 
 
 Dim vsoShape As Visio.Shape 
 Dim intCounter As Integer 
 Dim adblXYPoints(1 To (5 * 2)) As Double 
 
 For intCounter = 1 To 5 
 
 'Set x components (array elements 1,3,5,7,9) to 1,2,3,4,5 
 adblXYPoints((intCounter * 2) - 1) = intCounter 
 
 'Set y components (array elements 2,4,6,8,10) to f(i) 
 adblXYPoints(intCounter * 2) = (intCounter * intCounter) - (7 * intCounter) + 15 
 Next intCounter 
 
 Set vsoShape = ActivePage.DrawSpline(adblXYPoints, 0.25, visSplineAbrupt) 
 
End Sub

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。