Compartilhar via


Método Shape.DrawSpline (Visio)

Cria uma nova forma cujo caminho segue uma determinada sequência de pontos.

Sintaxe

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

expressão Uma variável que representa um objeto Shape.

Parâmetros

Nome Obrigatório/Opcional Tipo de dados Descrição
xyArray() Obrigatório Double Uma matriz de valores x e y alternados que definem pontos no caminho da nova forma.
Tolerance Obrigatório Double Quanto o caminho da nova forma deve se aproximar dos pontos determinados.
Flags Obrigatório Integer Sinalizadores que influenciam a maneira como a forma é desenhada.

Valor de retorno

Forma

Comentários

O método DrawSpline cria uma nova forma cujo caminho fica dentro da tolerância determinada da matriz de pontos determinada. Para ajustar os pontos determinados exatamente, especifique uma tolerância zero (0). Normalmente, o método DrawSpline ajusta os segmentos de spline nos pontos, mas às vezes ele produz segmentos de arco lineares ou circulares na nova forma.

Os pontos de controle e a tolerância estão em unidades de desenho internas (polegadas) com relação ao espaço de coordenadas da página, mestre ou grupo no qual a nova forma é criada. A matriz passada deve ser SAFEARRAY de valores de ponto flutuante de 8 bytes passados por referência (VT_R8|VT_ARRAY|VT_BYREF). É assim que o Microsoft Visual Basic passa matrizes para objetos Automation.

O erro entre os pontos e o caminho da forma resultante está aproximadamente dentro da tolerância. Quando o número de pontos é grande, às vezes o erro real pode exceder a tolerância prescrita.

O parâmetro Flags é uma bitmask que especifica opções para desenhar a nova forma. Seu valor deve ser zero (0) ou uma combinação de um ou mais dos valores a seguir.

Constant Valor
visSplinePeriodic 1(&H1)
visSplineDoCircles 2(&H2)
visSplineAbrupt 4(&H4)
visSpline1D 8(&H8)

Se Flags incluir visSplinePeriodic e as condições a seguir forem atendidas, o aplicativo tentará desenhar uma spline periódica. Caso contrário, o Visio desenhará uma spline não-periódica:

  • O último ponto deve ser uma repetição do primeiro.

  • Se o sinalizador visSplineAbrupt também estiver incluído, todo o caminho fechado delineado pelos pontos deverá estar livre de alterações abruptas na direção e na curvatura.

Se Flags incluir visSplineDoCircles, o Microsoft Visio reconhecerá segmentos circulares na matriz de pontos determinada e gerará arcos circulares em vez de linhas de spline para esses segmentos.

Se Flags incluir visSplineAbrupt, o Visio quebrará a spline onde detectar uma alteração abrupta na direção ou na curvatura na trilha do ponto. Uma alteração abrupta na direção é definida por três pontos consecutivos A, B, C na lista para os quais a distância entre B e o segmento de linha AC é mais que duas vezes a tolerância. O aplicativo também considerará o ponto B como uma alteração abrupta se um dos segmentos AB ou BC for mais que duas vezes maior que o outro. No ponto no qual uma alteração é detectada, o aplicativo finaliza a peça atual (linha, arco ou spline) e inicia uma nova.

Se Flags incluir visSpline1D e os primeiros e últimos pontos em xyArray() não coincidirem, o método DrawSpline produzirá uma forma que tem comportamento unidimensional (1D), caso contrário, produz uma forma com comportamento bidimensional (2D).

Se o primeiro e o último ponto em xyArray() coincidirem, o método DrawSpline produzirá uma forma preenchida.

Exemplo

O exemplo a seguir mostra como desenhar uma spline periódica através de cinco pontos arbitrários, exigindo que a spline se aproxime até 0,25 (desenho) polegadas de cada ponto. Ele permite que o Visio inicie novos segmentos no caminho da nova forma em pontos considerados abruptos.

 
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

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.