Visio) (Page.DrawSpline 方法

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

語法

expressionDrawSpline( _xyArray()_ , _Tolerance_ , _Flags_ )

表達 代表 Page 對象的變數。

參數

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

傳回值

圖形

註解

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

控制點和容錯位於內部繪圖單位 (英吋) ,與要建立新圖形之頁面、主圖形或群組的座標空間有關。 傳遞的陣列應該是參考所傳遞之8位元組浮點數的SAFEARRAY (VT_R8|VT_ARRAY|VT_BYREF) 。 這是 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 包含 visSpline1D ,且 xyArray () 中的第一個和最後一個點不一致, 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 支援與意見反應