Shape.DrawBezier 方法 (Visio)

创建一个形状,其路径由提供的贝赛尔控制点序列定义。

语法

expression. DrawBezier( _xyArray()_ , _degree_ , _Flags_ )

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

参数

名称 必需/可选 数据类型 说明
xyArray () 必需 Double 一个交替出现 xy 值的数组,这些值定义新建形状的贝赛尔控制点。
程度 必需 Integer 贝赛尔曲线的曲度。
Flags 必需 Integer 影响形状绘制方式的标志。

返回值

Shape

说明

xyArray()degree 参数必须满足下列条件:

1 <= degree<= 9

点数必须为 k * 度 + 1,其中 k 为正整数。 如果第一个点称为 p0 ,则对于介于 1 和 k 之间的任意整数 m则假定 p (m * 度) 是贝塞尔段的最后一个控制点,以及下一个段的第一个控制点。

其结果为一条由 k 个贝赛尔曲线段组成的复合曲线。 xyArray() 的输入点定义曲线的控制点。 如果需要平滑曲线,请确保当 n = m * 度整数 m 时,p (n - 1) pnp (n + 1) 为共线性。 在应用程序中,复合的贝赛尔曲线表示为具有 multiplicity = degree 的整数 knots 的 B 样条。

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

Flags 参数是一个位掩码,指定用于绘制新建形状的选项。 此参数的值应为零 (0) 或 visSpline1D (8)。

如果 FlagsvisSpline1DxyArray () 中的第一个和最后一个点不一致, 则 DrawBezier 方法将生成一个具有一维 (1D) 行为的形状;否则,它将生成具有二维 (二维) 行为的形状。

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

示例

以下示例显示如何在活动页上绘制一条通过五个任意点的贝赛尔曲线。

 
Public Sub DrawBezier_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-coordinates (array elements 1,3,5,7,9) to 1,2,3,4,5 
 adblXYPoints((intCounter * 2) - 1) = intCounter 
 
 'Set y-coordinates (array elements 2,4,6,8,10) to f(intCounter) 
 adblXYPoints(intCounter * 2) = (intCounter * intCounter) - (7 * intCounter) + 15 
 
 Next intCounter 
 
 Set vsoShape = ActivePage.DrawBezier(adblXYPoints, 2, visSpline1D) 
 
End Sub

支持和反馈

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