Функция PolyPolyline
Declare Function PolyPolyline Lib "gdi32" (ByVal hdc As Long, lppt As POINTAPI, lpdwPolyPoints As Long, ByVal cCount As Long) As Long
PolyPolyline рисует множество линий. Эти линии соединяются в точках на устройстве. Эта функция схожа с функцией Polyline. Первая точка соединяется со второй,вторая с третьей и т.д. Первая и последняя точки не соединяются. Эти линии соединяются в точках, данные в массиве lppt. Соединяющие линии рисуются текущим цветом объекта
- hdc
- Контекст устройства для вывода линий
- lppt
- Массив, содержащий все точки в каждом наборе
- lpdwPolyPoints
- Массив, определяющий количество точек каждого набора. Первый элемент определяет, сколько точек находятся в первом наборе и т.д.
- cCount
- Число элементов в lpdwPolyPoints
Пример
' Рисуем линии в виде спирали
Private Sub Form_Load()
Const PI = 3.14159265
Const NUM_PLINES = 8
Const PTS_PER_PLINE = 30
Const Dtheta = 2 * PI / PTS_PER_PLINE
Dim cx As Single
Dim cy As Single
Dim num_points As Integer
Dim pts() As POINTAPI
Dim num_polylines As Integer
Dim counts() As Long
Dim i As Integer
Dim j As Integer
Dim theta As Single
Dim r As Single
Dim dr As Single
' Функции API всегда работают с пикселами
picCanvas.ScaleMode = vbPixels
picCanvas.AutoRedraw = True
dr = picCanvas.ScaleWidth / 2 / PTS_PER_PLINE
cx = picCanvas.ScaleWidth / 2
cy = picCanvas.ScaleHeight / 2
For i = 1 To NUM_PLINES
' Создаем спираль
theta = i * 2 * PI / NUM_PLINES
r = 0
For j = 1 To PTS_PER_PLINE
' Создаем точки для одной линии
num_points = num_points + 1
ReDim Preserve pts(1 To num_points)
With pts(num_points)
.X = cx + r * Cos(theta)
.Y = cy + r * Sin(theta)
End With
theta = theta + Dtheta
r = r + dr
Next j
' Сохраняем число точек этой линии
num_polylines = num_polylines + 1
ReDim Preserve counts(1 To num_polylines)
counts(num_polylines) = PTS_PER_PLINE
Next i
' Рисуем ломаные линии из массива точек
PolyPolyline picCanvas.hdc, pts(1), counts(1), num_polylines
End Sub
Смотри также
LineTo, Polyline, PolylineTo
Категория
Линии и кривые