Метод Master.DrawSpline (Visio)
Создает новую фигуру, путь которой следует за заданной последовательностью точек.
выражение. DrawSpline
( _xyArray()_
, _Tolerance_
, _Flags_
)
Выражение Переменная, представляющая главный объект.
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
xyArray() | Обязательный | Double | Массив чередующихся значений x и y , определяющих точки в пути новой фигуры. |
Допуск | Обязательный | Double | Насколько близко путь новой фигуры должен приблизиться к заданным точкам. |
Flags | Обязательный | Integer | Флаги, влияющие на то, как рисуется фигура. |
Shape
Метод DrawSpline создает новую фигуру, путь которой находится в пределах заданного допуска заданного массива точек. Чтобы точно соответствовать заданным точкам, укажите допуск нуля (0). Как правило, метод DrawSpline помещает сегменты сплайна через точки, но иногда он создает сегменты линии или круговой дуги в новой фигуре.
Контрольные точки и погрешность находятся во внутренних единицах рисования (дюймах) относительно пространства координат страницы, master или группы, в которой создается новая фигура. Переданный массив должен быть SAFEARRAY из 8-байтовых значений с плавающей запятой, передаваемых по ссылке (VT_R8|VT_ARRAY|VT_BYREF). Таким образом Microsoft Visual Basic передает массивы в объекты службы автоматизации.
Ошибка от точки к пути результирующей фигуры примерно находится в пределах допустимости. Если количество точек велико, фактическая ошибка иногда может превышать предписанный допуск.
Параметр Flags — это битовая маска, указывающая параметры для рисования новой фигуры. Его значение должно быть равным нулю или комбинации одного или нескольких из следующих значений.
Константа | Значение |
---|---|
visSplinePeriodic | 1(&H1) |
visSplineDoCircles | 2(&H2) |
visSplineAbrupt | 4(&H4) |
visSpline1D | 8(&H8) |
Если флаги включают visSplinePeriodic и выполняются следующие условия, приложение пытается нарисовать периодический сплайн. В противном случае Visio рисует не периодическое сплайн:
Последняя точка должна быть повторением первой.
Если флаг visSplineAbrupt также включен, весь закрытый путь, указанный точками, должен быть свободен от резких изменений направления и кривизны.
Если флаги включают visSplineDoCircles, Microsoft Visio распознает циклические сегменты в заданном массиве точек и создает циклические дуги вместо сплайн-строк для этих сегментов.
Если флаги включают visSplineAbrupt, Visio прерывает сплайн каждый раз, когда обнаруживает резкое изменение направления или кривизны в следе точки. Резкое изменение направления определяется тремя последовательными точками A, B, C в списке, для которых расстояние между B и сегментом AC линии более чем в два раза превышает допуск. Приложение также считает точку Б резким изменением, если один из сегментов AB или BC более чем в два раза длиннее другого. В момент, когда обнаруживается резкое изменение, приложение завершает текущий фрагмент (линия, дуга или сплайн) и запускает новый.
Если флаги включают 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 и обратная связь.