共用方式為


Shape.DrawSpline 方法 (Visio)

會建立一個新的圖形,此圖形的路徑會跟隨一連串指定的點。

語法

expressionDrawSpline( _xyArray()_ , _Tolerance_ , _Flags_ )

expression 一個用於表示 Shape 物件的變數。

參數

名稱 必要/選用 資料類型 描述
xyArray () 必要 雙精確度 交替的 xy 值的陣列,這些值會定義新圖形路徑中的點。
Tolerance 必要 雙精確度 新圖形的路徑必須近似於指定的點之程度。
Flags 必要 整數 會影響圖形繪製方法的旗標。

傳回值

圖形

註解

DrawSpline 方法會建立一個新的圖形,此圖形的路徑會在指定點的陣列之指定容錯範圍內。 若要完全符合指定的點,請指定零 (0) 的容錯值。 一般來說,DrawSpline 方法會經由這些點來連成曲線段,但是有時會在新的圖形中產生線段或圓弧線段。

控制點與公差以 (英吋為單位,相對於新形狀所建立的頁面、母版或群組的座標空間) 。 傳遞的陣列應為由參考 (VT_R8| 傳遞的 8 位元組浮點數 SAFEARRAYVT_ARRAY|VT_BYREF) 。 這就是 Microsoft Visual Basic 將陣列傳遞給自動化物件的方式。

產生的圖形路徑中的點之錯誤,大約是在容錯範圍內。 當點的數目過多時,實際的錯誤有時可能會超出所規定的容錯程度。

Flags 參數是一個指定繪製新圖形之選項的位元遮罩。 其值應該為零,或是下列其中一個或多個值的組合。

常數
visSpline 週期性 1 (&H1)
visSplineDoCircles 2 (&H2)
visSpline突然 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 方法會產生一個具有一維 (一維) 行為的形狀,否則會產生一個具有二維 (二維) 行為的形狀。

如果 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 支援與意見反應