PDA

View Full Version : سوال در بارة یک تابع API (PolyBezier)



BehnamPro
چهارشنبه 14 آبان 1382, 19:22 عصر
سلام.من در بارة تابع PolyBezier که در انتها تعریف شده یه چیزایی می دونم اینکه با دادن مختصات چند نقطه یک منحنی رسم می کنه و ... ولی می خوام یکی بیشتر و مفصل تر دربارة نحوة کار با اون توضیح بده لطفا :lol:

BehnamPro
چهارشنبه 14 آبان 1382, 19:23 عصر
Public Declare Function PolyBezier Lib "gdi32" Alias "PolyBezier" (ByVal hdc As Long, lppt As POINTAPI, ByVal cPoints As Long) As Long

:mrgreen: :roll:

Abbas Arizi
پنج شنبه 15 آبان 1382, 00:47 صبح
این مثال نسبتا جالب رو توی یک سایت پیدا کردم. به یک Command Button و PictureBox برای تست اون نیاز دارید

Private Declare Function PolyBezier Lib "gdi32" ( _
ByVal hDC As Long, _
ByRef Points As POINT, _
ByVal PointNum As Long) As Long

Private Type POINT
x As Long
y As Long
End Type


Private Sub Command1_Click()
Const Speed As Single = 1
Const PointNum As Long = 31 '3???+1

Dim Points(PointNum - 1) As POINT
Dim x(PointNum - 1) As Single
Dim y(PointNum - 1) As Single
Dim DX(PointNum - 1) As Single
Dim DY(PointNum - 1) As Single
Dim I As Long
Dim J As Long

For I = 0 To PointNum - 1
x(I) = Rnd * 200
y(I) = Rnd * 200
DX(I) = Rnd * Speed - Speed / 2
DY(I) = Rnd * Speed - Speed / 2
Next

Picture1.AutoRedraw = True

For J = 0 To 3000
For I = 0 To PointNum - 1
If x(I) + DX(I) < 0 Or x(I) + DX(I) > 200 Then DX(I) = -DX(I)
If y(I) + DY(I) < 0 Or y(I) + DY(I) > 200 Then DY(I) = -DY(I)
x(I) = x(I) + DX(I)
y(I) = y(I) + DY(I)
Points(I).x = x(I)
Points(I).y = y(I)
Next


Picture1.Cls
PolyBezier Picture1.hDC, Points(0), PointNum

DoEvents
Next
End Sub