• 0
huda kadoom

ارجو المساعده في حل هذه المشكله

سؤال

كيفية كتابة كود لمربع يتحرك بأبعاد الماوس بلغة vb 6؟؟؟؟

فعندما نضغط على مكان معين بالماوس داخل picture يتحرك المربع بأتجاه 

 

 

مــــــــــــــــــــــــــــــــــــــــع الشكـــــــــــــــــــر والتقـــــــــــــــــــــــدير

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

6 إجابة على هذا السؤال .

  • 0

السلام عليكم...

 

أفترض أنه يوجد 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 IfEnd Sub

 

2. أما لإمساك الـ Shape1 بالفأرة و تحريكه أينما تحرك مؤشر الفأرة فإن الكود أطول قليلاً لأن الـ Shape في Visual Basic 6 لا يستجيب لأية أحداث (ليس له إجراءات). و الكود كالتالي:

' في قسم التصريحات العام. متغيرات لحفظ البياناتPrivate StartX As LongPrivate StartY As LongPrivate StartLeft As LongPrivate StartTop As LongPrivate Dragging As BooleanPrivate Sub Form_Load()    Dragging = False        ' يمكن ضبط هذه الخصائص أثناء التصميم و حذف هذين السطرين    Picture1.ScaleMode = vbPixels    Picture2.ScaleMode = vbPixelsEnd 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 IfEnd 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 IfEnd Sub' عند إفلات الزر الأيسر نلغي إشارة السحبPrivate Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)    Dragging = FalseEnd Sub

 

في المرفقات مشروع لتوضيح الطريقتين.

 

MoveShapes.rar

 

نرجو الاستفادة و السلام.

 

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم...

 

التحريك سهل، و لكن...

 

فعندما نضغط على مكان معين بالماوس داخل picture يتحرك المربع بأتجاه

 

نرجو التوضيح أكثر - كيف؟

 

سلام.

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

وعليكم السلام 

اقصد عند التنفيذ يظهر مربع ولا يتحرك الا اذا قمت انا بتحريك الماوس وجعلة داخل picture فبالمكان الذي اشرت علية بالماوس يتحرك المربع ////

اتمنى لو وضح لك قصدي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا اخي العزيز

 

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
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم...

 

ما هو إجراء dda ؟ و إذا أمكن إرفاق مشروع صغير يحتوي على إجراء dda لرسم المربع داخل الـ PictureBox.

 

سلام.

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اقصد اجراء لخوارزمية 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
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .