كيفية كتابة كود لمربع يتحرك بأبعاد الماوس بلغة vb 6؟؟؟؟
فعندما نضغط على مكان معين بالماوس داخل picture يتحرك المربع بأتجاه
مــــــــــــــــــــــــــــــــــــــــع الشكـــــــــــــــــــر والتقـــــــــــــــــــــــدير
كيفية كتابة كود لمربع يتحرك بأبعاد الماوس بلغة vb 6؟؟؟؟
فعندما نضغط على مكان معين بالماوس داخل picture يتحرك المربع بأتجاه
مــــــــــــــــــــــــــــــــــــــــع الشكـــــــــــــــــــر والتقـــــــــــــــــــــــدير
السلام عليكم...
التحريك سهل، و لكن...
اقتباسفعندما نضغط على مكان معين بالماوس داخل picture يتحرك المربع بأتجاه
نرجو التوضيح أكثر - كيف؟
سلام.
وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ
صدق الله العظيم
وعليكم السلام
اقصد عند التنفيذ يظهر مربع ولا يتحرك الا اذا قمت انا بتحريك الماوس وجعلة داخل picture فبالمكان الذي اشرت علية بالماوس يتحرك المربع ////
اتمنى لو وضح لك قصدي
السلام عليكم...
أفترض أنه يوجد Shape اسمه Shape1 داخل PictureBox اسمه Picture1.
1. لوضع مركز الـ Shape1 عند النقطة التي يتم النقر عليها داخل الـ Picture1 يكون الكود بسيطاً: سطر واحد كالتالي في الحدث MouseDown لـ Picture1:
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
Shape1.Move X - Shape1.Width \ 2, Y - Shape1.Height \ 2
End If
End Sub
2. أما لإمساك الـ Shape1 بالفأرة و تحريكه أينما تحرك مؤشر الفأرة فإن الكود أطول قليلاً لأن الـ Shape في Visual Basic 6 لا يستجيب لأية أحداث (ليس له إجراءات). و الكود كالتالي:
' في قسم التصريحات العام. متغيرات لحفظ البيانات
Private StartX As Long
Private StartY As Long
Private StartLeft As Long
Private StartTop As Long
Private Dragging As Boolean
Private Sub Form_Load()
Dragging = False
' يمكن ضبط هذه الخصائص أثناء التصميم و حذف هذين السطرين
Picture1.ScaleMode = vbPixels
Picture2.ScaleMode = vbPixels
End Sub
' عند الضغط على المربع بالزر الأيسر. نحتفظ ببيانات موقع النقر و نؤشر لبداية عملية السحب
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
If (X >= Shape1.Left) And (X <= (Shape1.Left + Shape1.Width)) _
And (Y >= Shape1.Top) And (Y <= (Shape1.Top + Shape1.Height)) Then
StartX = X
StartY = Y
StartLeft = Shape1.Left
StartTop = Shape1.Top
Dragging = True
End If
End If
End Sub
' عند تحريك المؤشر مع الضعط نحرك المربع حسب حركة المؤشر
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If (Button = vbLeftButton) And Dragging Then
Shape1.Left = StartLeft + X - StartX
Shape1.Top = StartTop + Y - StartY
End If
End Sub
' عند إفلات الزر الأيسر نلغي إشارة السحب
Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dragging = False
End Sub
في المرفقات مشروع لتوضيح الطريقتين.
نرجو الاستفادة و السلام.
وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ
صدق الله العظيم
شكرا اخي العزيز
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = vbLeftButton Then Shape1.Move X - Shape1.Width \ 2, Y - Shape1.Height \ 2 End If End Sub
هذا الكود هو المطلوب
من فضلك
هل تستطيع صياغتهه بدون استعمال shape1 مع بعض الاضافات
حيث نرسم مربع صغير بأستدعاء اجراء dda اربع مرات
وتحريك المربع الصغير يكون محدد بأبعاد الماوس داخل مربع كبير مرسوم داخل picture1 باستدعاء dda اربع مرات
اسفة على الاطاله لكن اعذرني فانا مبتدئه وهذا اول مشروع لي
وارجو منك المساعدة
تم تعديل هذه المشاركة بواسطة huda kadoom في 29 مارس 2013 في 08:26
السلام عليكم...
ما هو إجراء dda ؟ و إذا أمكن إرفاق مشروع صغير يحتوي على إجراء dda لرسم المربع داخل الـ PictureBox.
سلام.
وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ
صدق الله العظيم
اقصد اجراء لخوارزمية dda لرسم الخط المستقيم
يمكنك استدعاء الايعاز الجاهز لرسم المستقيم اربع مرات
Private Sub Form_Activate()
X1 = 50
Y1 = 50
p1.Line (X1, Y1)-(X1 + 290, Y1), 200
p1.Line (X1 + 290, Y1)-(X1 + 290, Y1 + 290), 200
p1.Line (X1 + 290, Y1 + 290)-(X1, Y1 + 290), 200
p1.Line (X1, Y1 + 290)-(X1, Y1), 200
'"رسم المربع الكبير"
p1.Line (X1 + 100, Y1 + 100)-(X1 + 150, Y1 + 100), 77
p1.Line (X1 + 150, Y1 + 100)-(X1 + 150, Y1 + 150), 77
p1.Line (X1 + 150, Y1 + 150)-(X1 + 100, Y1 + 150), 77
p1.Line (X1 + 100, Y1 + 150)-(X1 + 100, Y1 + 100), 77
"رسم المربع الصغير الذي يتحرك اينما يقف الماوس شرط داخل المربع الكبير"
End Sub
تم تعديل هذه المشاركة بواسطة huda kadoom في 29 مارس 2013 في 16:37
هذا الموضوع مغلق.