А чего, юзай CreatePolygonRgn, в ней любую форму точками можешь сделать. Правда там она не возвращает массив точек (такой по-моему нету). Но зато с ним работает. Только продумай, чтобы точки сопрягали дугу с линией - их надо правильно расставить и задать. А функцию по возвращению массива, можешь сам сделать.
P.S.То, что мы ищем, как правило, ближе, чем мы думаем
Option Explicit
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function BeginPath Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function EndPath Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function PathToRegion Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function PolyBezier Lib "gdi32" (ByVal hdc As Long, lppt As POINTAPI, ByVal cPoints As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Long) As Long
Private Function SetCreateForm(ByVal propHwnd As Long, ByVal propHDC As Long)
Dim rComb As Long
Dim dl As Long
Dim Poi() As POINTAPI
Dim vDC As Long
vDC = propHDC
ReDim Poi(6)
Poi(0).x = 250: Poi(0).y = 159
Poi(1).x = 237: Poi(1).y = 181
Poi(2).x = 223: Poi(2).y = 202
Poi(3).x = 210: Poi(3).y = 224
Poi(4).x = 162: Poi(4).y = 209
Poi(5).x = 114: Poi(5).y = 195
Poi(6).x = 66: Poi(6).y = 180
dl = BeginPath(vDC)
dl = PolyBezier(vDC, Poi(0), 7)
dl = EndPath(vDC)
rComb = PathToRegion(vDC)
dl = SetWindowRgn(propHwnd, rComb, 1)
End Function
Private Sub Form_Load()
Call SetCreateForm(Form1.hwnd, Form1.hdc)
End Sub
Да мне, блин, не форму надо, а прямоугольик скругленый на форме рисовать
Пордон, не правильно понял. Просто
у формы делает закругленные углы;
я понял в прямом смысле.
А в массив все-таки никак?..
А сделай контрол, используя функции из ответов №1 и 2 - по-моему то, что нужно.(и массив точек задашь и всё, что нужно).
Другой вариант:
Юзай line в n-ом количестве так, чтобы скруглённый прямоугольник строили.