В GDIPlusAPI функции предназначенные для рисования линий, прямоугольников и т.д. перегружаемые - т.е. используют разные данные на входе, тобишь Integer, Float и т.д.. Например:
- Код: Выделить всё
Public Declare Function GdipDrawLine Lib "gdiplus" (ByVal graphics As Long, ByVal pen As Long, ByVal x1 As Single, ByVal y1 As Single, ByVal x2 As Single, ByVal y2 As Single) As GpStatus
Public Declare Function GdipDrawLineI Lib "gdiplus" (ByVal graphics As Long, ByVal pen As Long, ByVal x1 As Long, ByVal y1 As Long, ByVal x2 As Long, ByVal y2 As Long) As GpStatus
Public Declare Function GdipDrawLines Lib "gdiplus" (ByVal graphics As Long, ByVal pen As Long, ByRef Points As POINTF, ByVal count As Long) As GpStatus
Так вот, я никак не могу понять что необходимо передать в функцию GdipDrawLines в параметре ByRef Points As POINTF... По логике вещей - т.е. по логике Microsoft (MSDN) - это должен быть массив типа POINTF
- Код: Выделить всё
Public Type POINTF ' aka PointF
x As Single
y As Single
End Type
Но функция объявлена именно так. Попытка декларировать Points как Points() не дает никаких результатов. Пробовал и другие ухищрения, но это не дало никакого эффекта. Как же все таки передать в эту функцию массив точек???
Вот пример (MSDN) того как это в VB.Net делается
- Код: Выделить всё
Dim points As Point() = { _
New Point(0, 100), _
New Point(50, 80), _
New Point(100, 20), _
New Point(150, 80), _
New Point(200, 100)}
Dim pen As New Pen(Color.FromArgb(255, 0, 0, 255))
e.Graphics.DrawLines(pen, points)
, где Point- тот же POINTF только для целых x, y