امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
ای پی آی برای ضبط حرکات سریع ماوس
نویسنده پیام
mojtabamalaekeh آفلاین
کاربر با تجربه
****

ارسال‌ها: 566
موضوع‌ها: 104
تاریخ عضویت: آذر ۱۳۸۶

تشکرها : 1378
( 631 تشکر در 223 ارسال )
ارسال: #1
ای پی آی برای ضبط حرکات سریع ماوس
توی Paint وقتی قلم رو خیلی سریع می کشیم تمام نقاطی که ماوس از روشون عبور کرده رنگی میشن.
ولی اگه بخوایم تو رویداد MouseMove توی VB این کار رو بکنیم با حرکت سریع ماوس بعضی از نقاط در نظر گرفته نمیشن و مسیر ماوس بصورت خط چین رسم میشه.
تابعی هست که تمام نقاط توی مسیر ماوس رو حتی در حرکت های سریع، به برنامه بفهمونه؟


۰۳-مرداد-۱۳۸۷, ۲۱:۲۳:۰۸
ارسال‌ها
پاسخ
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #2
RE: ای پی آی برای ضبط حرکات سریع ماوس
شما مگه تابعتونو چطور مینویسین که یه صورت خط چین می افته؟
تو همون رویداد mose move شما 2 تا متغییر public تعیین میکنین a,bوقتی نقطه شروع رو خونیدین میگذارین تو این 2 تا متغییر بعد تو این رویداد چک میکنین که مقدار x,y اگه با این دو متغییر متفاوت بود یه خط از a,b به x,y کشیده بشه و مختصات x,y در a,b قرار بگیره اینجوری هیچ وقت خط چین نمیشه
۰۳-مرداد-۱۳۸۷, ۲۳:۲۰:۱۸
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : mojtabamalaekeh
mojtabamalaekeh آفلاین
کاربر با تجربه
****

ارسال‌ها: 566
موضوع‌ها: 104
تاریخ عضویت: آذر ۱۳۸۶

تشکرها : 1378
( 631 تشکر در 223 ارسال )
ارسال: #3
RE: ای پی آی برای ضبط حرکات سریع ماوس
من که نمی خوام خط مستقیم بکشم. شما قلم معمولی Paint رو در نظر بگیرید که کاربر هرجا دوست داشت ماوس رو می کشه و صفحه رو خط خطی می کنه. تو VB اگه بخوایم همین کار رو شبیه سازی کنیم به مشکل بر می خوریم چون مواقعی که کاربر ماوس رو سریع می کشه بعضی نقاط در نظر گرفته نمیشن.
کد:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = vbLeftButton Then Me.PSet (X, Y)
End Sub
قطعه کد معادل
کد:
Private Declare Function SetPixelV Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long

Private Sub Form_Load()
    Me.ScaleMode = vbPixels
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    If Button = vbLeftButton Then SetPixelV Me.hdc, x, y, vbBlack
End Sub
البته کار دوتا کد یکیه. منظورم این بود که هر دو تا راه رو امتحان کردم.


۰۴-مرداد-۱۳۸۷, ۰۷:۰۴:۴۱
ارسال‌ها
پاسخ
ajlajlajl آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,192
موضوع‌ها: 70
تاریخ عضویت: مهر ۱۳۸۴

تشکرها : 932
( 2618 تشکر در 1020 ارسال )
ارسال: #4
RE: ای پی آی برای ضبط حرکات سریع ماوس
خب همون که آقا مبین گفتنه.
اینو توی mousemove بنویس.
Me.Line -(X, Y) i

میزان رای دشمن است!
[تصویر:  cff100.png]
۰۴-مرداد-۱۳۸۷, ۰۹:۴۵:۳۲
وب سایت ارسال‌ها
پاسخ
mojtabamalaekeh آفلاین
کاربر با تجربه
****

ارسال‌ها: 566
موضوع‌ها: 104
تاریخ عضویت: آذر ۱۳۸۶

تشکرها : 1378
( 631 تشکر در 223 ارسال )
ارسال: #5
RE: ای پی آی برای ضبط حرکات سریع ماوس
به جواب رسیدم
ظاهرا Paint هم همین مشکل رو داره ولی فاصله بین نقاط رو با خط به هم وصل می کنه. آخه وقتی کدی نوشتم که فاصله بین نقاط رو با خط وصل کنه دیدم شکل حاصله شبیه همون شکل هایی که با قلم توی Paint ایجاد میشن.
پس شد همونی که آقا مبین فرمودند.
ممنون


(آخرین ویرایش در این ارسال: ۰۴-مرداد-۱۳۸۷, ۲۱:۰۸:۴۶، توسط mojtabamalaekeh.)
۰۴-مرداد-۱۳۸۷, ۱۷:۱۰:۲۵
ارسال‌ها
پاسخ


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS