تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] كيف اجعل صورتين تغيران مواقعهما بسحب احدهما
#2
تفضل اخي الكريم : 

اضفت الاكواد التالية الى مشروعك بعد اذنك  بدلا من حدث الضغط على الصور :

كود :
   Dim movingPicOriginalLeft As Integer
   Dim movingPic As PictureBox

   Dim mX As Integer

كود :
   Private Sub PictureBox9_MouseDown(sender As Object, e As MouseEventArgs)
       Dim pic As PictureBox = sender
       pic.BringToFront()
       movingPic = pic
       movingPicOriginalLeft = pic.Left
       mX = e.X
   End Sub

كود :
   Private Sub PictureBox9_MouseMove(sender As Object, e As MouseEventArgs)
       Dim pic As PictureBox = sender
       If pic Is movingPic Then
           pic.Left += e.X - mX
       End If
   End Sub

كود :
   Private Sub PictureBox9_MouseUp(sender As Object, e As MouseEventArgs)
       Dim pic As PictureBox = sender
       Dim OverlappingPic As PictureBox = GetOvelapping(pic)
       RestoreLocation()
       If Not OverlappingPic Is Nothing Then
           SwapPicture(pic, OverlappingPic)
       End If
   End Sub
كود :
   Function GetOvelapping(picturebox As PictureBox) As PictureBox
       For Each pic In Pict
           If pic.Visible = False Then Continue For
           If pic Is picturebox Then Continue For
           If IsOverlapping(pic, picturebox) Then Return pic
       Next
       Return Nothing
   End Function

   Function IsOverlapping(pic1 As PictureBox, pic2 As PictureBox) As Boolean
       Return ((pic1.Left + pic1.Width) > pic2.Left) And
           ((pic1.Left) < pic2.Left + pic2.Width)

   End Function

   Sub SwapPicture(pic1 As PictureBox, pic2 As PictureBox)
       Dim tmpLeft As Integer
       tmpLeft = pic1.Left
       pic1.Left = pic2.Left
       pic2.Left = tmpLeft
   End Sub

   Sub RestoreLocation()
       If movingPic Is Nothing Then Return
       movingPic.Left = movingPicOriginalLeft
       movingPic = Nothing
       movingPicOriginalLeft = Nothing
       mX = Nothing
   End Sub

واضفت ايضا في الفورم لود :

كود :
       For Each pic In Pict
           AddHandler pic.MouseDown, AddressOf PictureBox9_MouseDown
           AddHandler pic.MouseUp, AddressOf PictureBox9_MouseUp
           AddHandler pic.MouseMove, AddressOf PictureBox9_MouseMove
       Next

وعملت كما طلبت اعتقد 
جرب واعطني رأيك


الملفات المرفقة
.zip   Math1apOrdre.zip (الحجم : 2.54 م ب / التحميلات : 45)
الرد }}}


الردود في هذا الموضوع
RE: كيف اجعل صورتين تغيران مواقعهما بسحب احدهما - بواسطة Anas Mahmoud - 10-09-20, 03:51 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  كيف اجعل قيمة dateTimePicker2 تساوي dateTimePicker1 Adel27213 2 632 09-11-23, 09:07 PM
آخر رد: Adel27213
  كيف اجعل البرنامج في بداية الشهر ينفذ حدث معين بالاصح اريد البرنامج في تاريخ واحد من Adel27213 3 935 05-11-23, 01:45 AM
آخر رد: justforit
  [VB.NET] كيف اجعل البرنامج يحدد اخر يوم من كل شهر Adel27213 2 657 03-11-23, 06:50 AM
آخر رد: Adel27213
  هل ممكن اجعل عناصر ال LISTBOX بشكل افقي ismaeel 0 620 01-05-23, 11:26 PM
آخر رد: ismaeel
  [سؤال] كيف اقوم بسحب معلومات من صفحة ويكيبديا zxz5432 12 7,770 20-01-23, 01:27 AM
آخر رد: lysalh65@gmail.com
  كيف اجعل Autoscroll هي التي تزيد عدد الصفوف في عرض البيانات عبدالكريم برشدان 1 847 07-08-22, 02:55 PM
آخر رد: asmarsou
  كيف اجعل اداة panel شفافة عمار عمار 3 1,546 10-02-22, 11:53 AM
آخر رد: عمار عمار
  كيف اجعل خلفية اداة Label1 شفافة aftfm 8 5,272 29-01-22, 01:42 AM
آخر رد: محمود الصياد
  [VB.NET] كيف اجعل داتا جريد فيو ينتقل مع تاكست بوكس bilgacim 1 1,216 28-01-22, 04:30 AM
آخر رد: سعود
Sad [VB.NET] كيف اجعل برنامجي يفتح المتصفح الافتراضي ؟؟ ana ali 4 1,711 24-07-21, 04:00 PM
آخر رد: trakktour

التنقل السريع :


يقوم بقرائة الموضوع: