22-09-12, 08:24 PM
(آخر تعديل لهذه المشاركة : 11-11-12, 11:40 PM {2} بواسطة الجوزاء وال.)
بسم الله الرحمن الرحيم
السلام عليكم ورحمه الله وبركاته
تحريك صورة 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 )
كود :
السلام عليكم ورحمه الله وبركاته
تحريك صورة 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
واضح بأن القيمة للـ 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]
هى لعدم اقفال البرنامج في حال حصول خطأ برمجي بالكود
المعذرة لو كان الشرح غير مفهوم .
المعذرة لو كان الشرح غير مفهوم .