Shape.DrawSpline, méthode (Visio)

Crée une forme dont le chemin suit une séquence de points.

Syntaxe

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

expression Une variable qui représente uneForme d’objet.

Paramètres

Nom Requis/Facultatif Type de données Description
xyArray() Obligatoire Double Tableau des valeurs x et y successives qui définissent les points dans le nouveau chemin de la forme.
Tolerance Obligatoire Double Degré d'approximation du chemin de la nouvelle forme par rapport aux points donnés.
Flags Obligatoire Integer Indicateurs influençant la manière dont la forme est tracée.

Valeur renvoyée

Shape

Remarques

La méthode DrawSpline crée une forme dont le chemin suit les points définis et ce, dans les limites de la tolérance indiquée. Pour qu'elle passe exactement par ces points, la tolérance doit être égale à zéro (0). Normalement, la méthode DrawSpline fait passer des segments de spline par les points ; cependant, elle produit parfois des segments de trait ou d'arc circulaire dans la nouvelle forme.

Les points de contrôle et la tolérance sont des unités de dessin internes (pouces) par rapport à l'espace coordonné de la page, de la forme de base ou du groupe dans lequel la forme est créée. Le tableau transmis doit être un tableau SAFEARRAY avec des valeurs à virgule flottante de 8 octets transmises par référence (VT_R8|VT_ARRAY|VT_BYREF). C'est ainsi que Microsoft Visual Basic transmet des tableaux aux objets Automation.

Le degré d'erreur entre les points et le chemin de la forme obtenue est plus ou moins dans les limites de la tolérance. Lorsque le nombre de points est important, l'erreur peut parfois excéder la tolérance indiquée.

Le paramètre Indicateurs est un masque binaire définissant les options de dessin de la nouvelle forme. Sa valeur est zéro ou une combinaison d'une ou plusieurs des valeurs suivantes.

Constante Valeur
visSplinePeriodic 1(&H1)
visSplineDoCircles 2(&H2)
visSplineAbrupt 4(&H4)
visSpline1D 8(&H8)

Si Indicateurs comprend la valeur visSplinePeriodic et si les conditions suivantes sont remplies, Visio tente de tracer une spline régulière. Dans le cas contraire, Visio trace une spline irrégulière :

  • Le dernier point doit correspondre au premier.

  • Si l'indicateur visSplineAbrupt est également inclus, l'intégralité du chemin fermé défini par les points ne doit comporter ni courbure ni changement de direction brusque.

Si Indicateurs comprend la valeur visSplineDoCircles, Microsoft Visio reconnaît les segments circulaires de la disposition de points fournie et génère des arcs circulaires et non des lignes de spline pour ces segments.

Si Indicateurs comprend la valeur visSplineAbrupt, Visio casse la spline dès qu'il détecte un changement brusque de courbure ou de direction dans la piste du point. Un changement brusque de direction est défini par trois points consécutifs A, B, C dans la liste, pour lesquels la distance entre le point B et le segment de trait AC est plus de deux fois la valeur de tolérance. L'application considère également le point B comme un changement brusque si l'un des segments AB ou BC est plus de deux fois plus long que l'autre. À l'endroit où un changement brusque est détecté, l'application termine la partie active (trait, arc ou spline) et en débute une nouvelle.

Si Flags inclut visSpline1D et que le premier et le dernier point dans xyArray() ne coïncident pas, la méthode DrawSpline produit une forme qui a un comportement unidimensionnel (1D). Sinon, elle produit une forme qui a un comportement bidimensionnel (2D).

Si le premier et le dernier point du tableau TableauXY() coïncident, la méthode DrawSpline génère une forme pleine.

Exemple

L'exemple suivant indique comment dessiner une spline régulière tout en passant par cinq points arbitraires et en faisant en sorte que la spline s'approche à moins de 6 mm (dessin) de chaque point. Visio peut ainsi débuter de nouveaux segments dans le chemin de la nouvelle forme à des points considérés comme brusques.

 
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

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.