Shape.DrawSpline メソッド (Visio)

指定された連続するポイントに沿ったパスによって、新しい図形を作成します。

構文

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

: Shape オブジェクトを表す変数。

パラメーター

名前 必須 / オプション データ型 説明
xyArray() 必須 倍精度浮動小数点型 (Double) 新しい図形のパス内のポイントを定義する xy の値が交互に表された配列です。
Tolerance 必須 倍精度浮動小数点型 (Double) 新しい図形のパスが、指定されたポイントにどれだけ近似するかを示す許容誤差です。
Flags 必須 Integer 図形の描画方法を制御するフラグです。

戻り値

Shape

注釈

DrawSpline メソッドは、指定したポイントの配列に対する許容誤差の範囲内にあるパスによって、新しい図形を作成します。 指定したポイントに完全に一致させるには、許容誤差をゼロ (0) に指定します。 通常 DrawSpline メソッドは、ポイントを通るスプラインのセグメントを作成しますが、新しい図形に線または円弧のセグメントを作成する場合もあります。

コントロール ポイントと許容誤差は、内部図面単位 (インチ) で表し、新しい図形を作成するページ、マスター シェイプ、またはグループの座標空間を基準とします。 渡される配列の種類は、参照渡しで SAFEARRAY 型の 8 バイト浮動小数点値にする必要があります (VT_R8|VT_ARRAY|VT_BYREF)。 Microsoft Visual Basic では、この方法でオートメーション オブジェクトに配列を渡します。

ポイントと作成される図形のパスとの誤差は、許容誤差の範囲内に収まります。 ポイントの数が多い場合、実際の誤差は指定されている許容誤差を超えることがあります。

パラメーター Flags は、新しい図形を描画するときのオプションを指定するビットマスクです。 この引数には、ゼロまたは次の値の組み合わせを指定します。

定数
visSplinePeriodic 1(&H1)
visSplineDoCircles 2(&H2)
visSplineAbrupt 4(&H4)
visSpline1D 8(&H8)

FlagsvisSplinePeriodic を指定し、次の条件を満たす場合は、連続スプラインが描画されます。 それ以外の場合は、非連続スプラインが描画されます。

  • 最後のポイントが最初のポイントの繰り返しになっている。

  • フラグ visSplineAbrupt も指定されている場合、ポイントを結んだ輪郭に基づく閉じたパス全体に、方向と曲率の急激な変化がない。

FlagsvisSplineDoCircles が含まれる場合、指定したポイントの配列内で円形のセグメントが認識され、これらのセグメントに対して、スプライン行ではなく円弧が生成されます。

FlagsvisSplineAbrupt が含まれる場合、ポイントの軌跡で方向または曲率に急激な変化が検出されると、スプラインが破断されます。 方向の急激な変化は、リスト内の連続する 3 つのポイント A、B、C によって定義され、B と線分 AC 間の距離が許容誤差の 2 倍を超える場合です。 また、線分 AB または BC のどちらかがもう一方の長さの 2 倍を超える場合も、ポイント B で急激な変化があったと見なされます。 急激な変化が検出されたポイントで、現在の線分 (線、円弧、またはスプライン) が終了し、新しい線分が開始されます。

FlagsvisSpline1D が含まれており、xyArray() の最初と最後の点が一致しない場合、DrawSpline メソッドは 1 次元 (1D) 動作を持つ図形を生成します。それ以外の場合は、2 次元 (2D) 動作を持つ図形が生成されます。

xyArray() の最初のポイントと最後のポイントが一致する場合は、DrawSpline メソッドによって、塗りつぶされた図形が生成されます。

次の例は、5 つの任意のポイントを通して定期的なスプラインを描画する方法を示しています。この方法では、各ポイントの 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 のサポートおよびフィードバックを参照してください。