Shape. DrawBezier メソッド (Visio)Shape.DrawBezier method (Visio)

特定の連続するベジエ コントロール ポイントで定義されるパスによって図形を作成します。Creates a shape whose path is defined by the supplied sequence of Bezier control points.


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

Shape オブジェクトを表す変数を取得します。expression A variable that represents a Shape object.


名前Name 必須 / オプションRequired/Optional データ型Data type 説明Description
xyArray ()xyArray() 必須Required DoubleDouble 新しい図形のベジエコントロールポイントを定義する_x_と_y_の値が交互に表された配列です。An array of alternating x and y values that define the Bezier control points for the new shape.
度合degree 必須Required 整数型 (Integer)Integer ベジエ曲線の角度です。The degree of the Bezier curve.
FlagsFlags 必須Required 整数型 (Integer)Integer 図形の描画方法を制御するフラグです。Flags that influence how the shape is drawn.

戻り値Return value



XyArray () パラメーターと_度_パラメーターは、次の条件を満たしている必要があります。The xyArray() and degree parameters must meet the following conditions:

1 < =< = 91 <= degree <= 9

ポイント数は、 k * ° + 1 でなければなりません。 k_は正の整数です。The number of points must be k * degree + 1, where k is a positive integer. 最初のポイントが_p0_と呼ばれ、1から_ _k_の整数の場合、 p (m * 度) はベジエセグメントの最後のコントロールポイントであると見なされ、次のコントロールポイントの最初のコントロールポイントになります。If the first point is called p0 , for any integer m between 1 and k , p(m * degree) is assumed to be the last control point of a Bezier segment, as well as the first control point of the next.

結果は、 k_ベジェセグメントで構成される複合カーブになります。The result is a composite curve that consists of k Bezier segments. xyArray() からの入力ポイントによって、曲線のコントロール ポイントが定義されます。The input points from xyArray() define the curve's control points. 滑らかな曲線が必要な場合は、 n = m * 度_を整数の_m_で指定した場合は、ポイント_p (n-1)pn 、および_p (n + 1) を必ず線形にしてください。If you want a smooth curve, make sure the points p(n - 1) , pn , and p(n + 1) are co-linear whenever n = m * degree with an integer m. アプリケーションでは、複合ベジエ曲線は、multiplicity = degree の整数 knots を持つ B スプラインとして表されます。The composite Bezier curve is represented in the application as a B-spline with integer knots of multiplicity = degree.

コントロール ポイントは内部図面単位 (インチ) で表し、作成した図形を描画するページ、マスター シェイプ、またはグループの座標空間を基準とします。The control points should be in internal drawing units (inches) with respect to the coordinate space of the page, master, or group where the shape is being drawn. 渡される配列の種類は、参照渡しで SAFEARRAY 型の 8 バイト浮動小数点値にする必要があります (VT_R8|VT_ARRAY|VT_BYREF)。The passed array should be a SAFEARRAY of 8-byte floating point values passed by reference (VT_R8|VT_ARRAY|VT_BYREF). Microsoft Visual Basic では、この方法でオートメーション オブジェクトに配列を渡します。This is how Microsoft Visual Basic passes arrays to Automation objects.

_Flags_引数は、新しい図形を描画するときのオプションを指定するビットマスクです。The Flags argument is a bitmask that specifies options for drawing the new shape. 値はゼロ (0) または visSpline1D (8) にする必要があります。Its value should be zero (0) or visSpline1D (8).

_Flags_がVisSpline1Dで、 xyArray () の最初のポイントと最後のポイントが一致しない場合、 Drawbezierメソッドは1次元 (1d) 動作の図形を生成します。それ以外の場合は、2次元 (2D) の動作を持つ図形を作成します。If Flags is visSpline1D and the first and last points in xyArray() don't coincide, the DrawBezier method produces a shape with one-dimensional (1D) behavior; otherwise, it produces a shape with two-dimensional (2D) behavior.

XyArray () の最初のポイントと最後のポイントが一致する場合、 drawbezierメソッドは塗りつぶされた図形を生成します。If the first and last points in xyArray() do coincide, the DrawBezier method produces a filled shape.


次の例は、アクティブなページ上で 5 個の任意の点を通るベジエ曲線を描く方法を示します。The following example shows how to draw a Bezier curve through five arbitrary points on the active page.

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

サポートとフィードバックSupport and feedback

Office VBA またはこの説明書に関するご質問やフィードバックがありますか?Have questions or feedback about Office VBA or this documentation? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.