تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
تحريك صورة 2 داخل حدود صورة 1 ( منع خروجها من الصورة 1 ) vb.net 2008
#1
بسم الله الرحمن الرحيم
السلام عليكم ورحمه الله وبركاته


تحريك صورة 2 داخل حدود صورة 1 ( منع خروجها من الصورة 1 ) vb.net 2008

معاينة النتيجة عبر يــتيوب من تصويري ورفعي

http://www.youtube.com/watch?v=_t74tS24gVc

اولاً نقوم بعمل مشروع جديد

File
New Project
Windows Form Application

ثانياً نضع أداة PictureBox1 ونضع لها صورة
من خصائص الاداة نغير الـ Location ونجعلة 0; 0
( ستصبح الصورة 1 باقصى اليسار بالاعلى )



ثالثاً نضع أداة PictureBox2 ونضع لها صورة أصغر ابعاد من PictureBox1
نضع مثلاً صورة للـ ( القرآن الكريم )

سيصبح العمل بالشكل التالي


الان نأتي لدور الاكواد
نستخدم احداثيات الماوس ( الفأرة )
السيني X و الصادي Y
نقوم بتعريف الثابت مثلاً ( H و W )
( سنستخدمة باحداثيات
السيني X و الصادي Y )
كود :

كود :
[color=Blue]Dim[/color] [color=Black]H, W[/color] [COLOR=Blue]As Integer
[/COLOR]

الان نقوم بالانتقال لحدث MouseDown الخاص بأداة PictureBox2 ( المراد تحريكها )
ونكتب الكود التالي بداخلة

كود :
[color=#800080]H[/color] = (MousePosition.X - PictureBox2.Location.X)
[color=#800080]W[/color] = (MousePosition.Y - PictureBox2.Location.Y)
الان نقوم بالانتقال لحدث MouseMove الخاص بأداة PictureBox2 ( المراد تحريكها )
ونكتب الكود التالي بداخلة
كود :
[color=Blue]If[/color] PictureBox2.Capture [color=Blue]Then[/color]
PictureBox2.Location = [color=Blue]New[/color] Point(MousePosition.X - H, MousePosition.Y - W)
[COLOR=Blue]End If
[/COLOR]

الى هنا الكود تمام تستطيع تحريك الصورة PictureBox2 اين ماتريد داخل الصورة PictureBox1 ولكن !
ستختفي الصورة PictureBox2 في حالة تحريكها اقصي اليمين او اليسار او بالاعلى وبالاسفل !

الحل لمنع خروجها من اطار PictureBox1 هو بإستخدام كود سهل
( أكبر من & أصغر من )

الان نستخدم كود بسيط ونضعة بداخل اخر كود تم كتابتة ونكتبة قبل End If السابق

والكود راح يعتمد عليك بتحديد ماتريدة من مقاس TOP اعلى واسفل أو Left يمين ويسار

للتوضيح أكثر
:
نذهب للفورم الان ونقوم بتحريك PictureBox2 اعلى الصورة الاولى PictureBox1
ونقوم بملاحظة الـ Location لها من الخصائص الخاصة بالأداة ونضغط علامة + لرؤية X و Y
X = التحريك من اليمين الى اليسار او العكس
Y = التحريك من اعلى الى اسفل او العكس

الآن نضع PictureBox2 اعلى صورة PictureBox1
ونلاحظ الـ Y لها كم تساوي ؟؟

واضح بأن الـ Y تساوي 0
الان الكود اللى نكتبة هو حين يصبح Y للصورة 2 اصغر من 0 نعطية امر بارجاع القيمة لـ Yالى 0
كود :
[color=Blue]If[/color] PictureBox2.Top [color=Red]<[/color] 0 [color=Blue]Then[/color] PictureBox2.Top = 0


الان نحرك الصورة PictureBox2 أسفل الصورة PictureBox1 لنرى كم تساوي الـ Y لها

واضح بأن Y يساوي للصورة PictureBox2 اسفل صورة PictureBox1 يساوي 218
الان نكتب الكود التالي : حينما تصبح قيمة Y للصورة PictureBox2 أكبر من 218 نعطية امر بارجاع القيمة الى 218
كود :
[color=Blue]If[/color] PictureBox2.Top [color=Red]>[/color] 218 [color=Blue]Then[/color] PictureBox2.Top = 218



الان نحرك الصورة PictureBox2 بإتجاة اليسار للصورة PictureBox1 ونلاحظ X كم تساوي ؟

واضح معنا بأن قيمة X للصورة 2 حتى لاتخرج من الصورة PictureBox1 هى 0
نكتب الكود الان حينما تصبح قيمة X للصورة PictureBox2 أصغر من 0 يقوم بإرجاعها الى 0


كود :
[color=Blue]If[/color] PictureBox2.Left [color=Red]<[/color] 0 [color=Blue]Then[/color] PictureBox2.Left = 0
تبقى الان أن نعرف قيمة الــ X للصورة PictureBox2 حينما نحركها لاقصى يمين الصورة PictureBox1 كم تساوي الـقيمة لها ؟

واضح بأن القيمة للـ X تساوي 329
نكتب الكود الان
حينما تصبح قيمة X للصورة PictureBox2 اكبر من 329 قم بإرجاعها الى 329
كود :
[color=Blue]If[/color] PictureBox2.Left [color=Red]>[/color] 329 [color=Blue]Then[/color] PictureBox2.Left = 329

ليصبح الكود الاجمالي هكذا

كود :
[color=Blue]Public Class[/color] Form1
[color=Blue]Dim[/color] H, W [color=Blue]As Integer[/color]
[color=Blue]Private Sub[/color] PictureBox2_MouseDown([color=Blue]ByVal[/color] sender [color=Blue]As Object[/color], [color=Blue]ByVal[/color] e [color=Blue]As[/color] System.Windows.Forms.MouseEventArgs) [color=Blue]Handles[/color] PictureBox2.MouseDown
[color=Blue]On Error Resume Next[/color]
H = (MousePosition.X - PictureBox2.Location.X)
W = (MousePosition.Y - PictureBox2.Location.Y)
[color=Blue]End Sub[/color]
[color=Blue]Private Sub[/color] PictureBox2_MouseMove([color=Blue]ByVal[/color] sender [color=Blue]As Object[/color], [color=Blue]ByVal[/color] e [color=Blue]As[/color] System.Windows.Forms.MouseEventArgs) [color=Blue]Handles[/color] PictureBox2.MouseMove
[color=Blue]On Error Resume Next[/color]
[color=Blue]If[/color] PictureBox2.Capture [color=Blue]Then[/color]
PictureBox2.Location = New Point(MousePosition.X - H, MousePosition.Y - W)
[color=Blue]If[/color] PictureBox2.Top < 0 [color=Blue]Then[/color] PictureBox2.Top = 0
[color=Blue]If[/color] PictureBox2.Top > 218 [color=Blue]Then[/color] PictureBox2.Top = 218
[color=Blue]If[/color] PictureBox2.Left < 0 [color=Blue]Then[/color] PictureBox2.Left = 0
[color=Blue]If[/color] PictureBox2.Left > 329 [color=Blue]Then[/color] PictureBox2.Left = 329
[COLOR=Blue]End If
End Sub
End Class
[/COLOR]

بخصوص اضافة
كود :
[color=Blue] On Error Resume Next[/color]
هى لعدم اقفال البرنامج في حال حصول خطأ برمجي بالكود

المعذرة لو كان الشرح غير مفهوم .
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  البرنامج بعد وضعه في صورة exe لا يتعامل مع قاعدة البيانات محمد خلف زكي 0 2,693 04-08-16, 05:10 AM
آخر رد: محمد خلف زكي
  قص جزء من الصورة Aly El-Haddad 3 3,112 07-07-13, 09:43 PM
آخر رد: kslawy
  مثال تحريك الفورم من غير اطار RaggiTech 0 2,689 17-10-12, 10:00 PM
آخر رد: RaggiTech
  كيفية عمل صورة - مدورة - Rouded PictureBox ! RaggiTech 0 2,889 17-10-12, 09:55 PM
آخر رد: RaggiTech
  تدوير صورة حول مركزها باستخدام gdi+ RaggiTech 0 3,125 17-10-12, 09:30 PM
آخر رد: RaggiTech
  مثال للحفاظ على تنسيق الاداوت اثناء تكبير الفورم في الفيجول دوت نت 2008 RaggiTech 0 3,488 17-10-12, 08:40 PM
آخر رد: RaggiTech
  مثال للبحث عن الملفات المخفية والغير مخفية داخل الكمبيوتر في الفيجول دوت نت 2008 RaggiTech 0 2,479 17-10-12, 08:38 PM
آخر رد: RaggiTech
  مثال - ربط جدولين في قاعدة بيانات اكسس من خلال فيجول دوت نت 2008 RaggiTech 0 7,075 17-10-12, 08:36 PM
آخر رد: RaggiTech
  مثال - تحويل التاريخ من ميلادي الى هجري وبالعكس في الفيجول دوت نت 2008 RaggiTech 0 4,695 17-10-12, 08:34 PM
آخر رد: RaggiTech
  نسخ صورة النافذه المفتوحه Screen capture RaggiTech 0 2,115 17-10-12, 08:27 PM
آخر رد: RaggiTech

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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم