Функция 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

Категория

Линии и кривые