PDA

View Full Version : اشکال یابی کد



sa1378
جمعه 02 خرداد 1393, 13:37 عصر
سلام
این کد برای اینه که shape وقتی رو یه نقطه کلیک میکنیم راه بیافته و به اون سمت بره و تا آخر ادامه بده
ولی کدم دو تا اشکال داره
یکی که دو اول اجرا فرم shape میاد توی مختصات (0و0)
یک دیگه هم اینکه وقتی رو نقطه کلیک میکنیم سریع میاد به همون نقطه و دیگه جلو نمیره
لطفا اشکالش رو برطرف کنین و کد درست رو بدین:
Dim b As Boolean
Dim l As Integer
Dim t As Integer
Option Explicit
Private Sub Form_Load()
Shape.Left = Me.Width / 2
Shape.Top = Me.Height / 2
l = 0
t = 0
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
l = 0
t = 0
b = True
Line1.X2 = X
Line1.Y2 = Y
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If b = True Then
Line1.X2 = X
Line1.Y2 = Y
End If
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
b = False
l = X
t = Y
End Sub
Private Sub Timer_Timer()
Shape.Left = Shape.Left + (l - (Shape.Left + (Shape.Width / 2)))
Shape.Top = Shape.Top + (t - (Shape.Top + (Shape.Height / 2)))
End Sub

vbhamed
شنبه 03 خرداد 1393, 13:41 عصر
سلام
حرکت از یک نقطه به نقطه دیگه اینطوری نیست، برای حرکت به یک نقطه باید از فرمول خط استفاده کنید یعنی y = mx + b كه m شيب خط هست و باید از طریق ریاضی بدست بیاد، یعنی با فرمول ریاضی مختصات نقطه فعلی و جدید رو بدید و شیب رو بدست بیارید
بعد فرض کنید قراره نمودار خط رو رسم کنید و نقطه یابی کنید و shape رو نقاط بدست اومده قرار بدید

اگر مختصات دو نقطه شروع و پایان رو (x1, y1) و (x2, y2) در نظر بگیریم، شیب خطی که از ایندو نقطه می گذره برابر است با :
m = (y2 - y1) / (x2 - x1)
و زاویه این خط برابر با آرکتانژانت شیب خط است یعنی (t = atn(m و خود معادله خط هم برابر است با :
y = y1 + (x - x1) * (y2 - y1) / (x2 - x1)
یا
y = y1 + (x - x1) * m

تعداد پیکسل های روی خط بین دو نقطه شروع و پایان برابر است با فاصله ایندو نقطه بر حسب پیکسل که برابر است با :
d = Sqr( (x2 - x1)^2 + (y2 - y1)^2 )

معادله خط رو که دارید، بازه x1 الی x2 و بازه y1 الی y2 را هم دارید، یعنی مشخصه که برای x چه اعدادی می توانید وارد کنید و برای y چه اعدادی.

تو معادله خط هم x و y مجهول اند، اگه x ها رو قرار دهید، y رو بدست می آورید و اگه y ها رو قرار دهید، x ها بدست می آیند. مثلا اگر x1 برابر 10 و x2 برابر 100 است، اعداد 10 الی 100 را یکی یکی به عنوان x در معادله خط قرار دهید تا y شان بدست بیاید سپس shape رو در مشخصات بدست آمده قرار بدید و البته تاخیر کوچکی هم ایجاد کنید تا به صورت انیمیشن دیده بشه