منصرة عمانية مشرفة عدة أقسام
عدد المساهمات : 270 نقاط : 5610 السٌّمعَة : 0 تاريخ التسجيل : 21/04/2010
| موضوع: اهم الطرق في لأستخدام الرسومات في الفيجوال بيسك الأربعاء يناير 05, 2011 8:51 pm | |
| الرسومات في فيجوال بيسيك
الالوان : هناك طريتقتين لتحديد الالوان فى لغة الفيجوال بيزيك 1- باستخدام الوظيفة RGB Function لتحديد قيمة الالوان الاساسية ( احمر ، اخضر ، ازرق)
RGB (0, 128, 0 ) يمكن اعطاء قيمة الالوان من O الى 255
امثلة :
كود FORM1. BACKCOLOR = RBG (0,128, 0 ) ( Green) FORM2. BACKCOLOR = RGB (255 , 255, 0 ) (Yellow) Pset ( 100, 100), RGB ( 0,0,64) ' Set Point to blue dark
- استخدام الوظيفة QBCOLOR
وهى تحدد قيمة الالوان طبقا لجدوال الالوان الموجودة فى ميكروسوفت كويك بيزك وهى الالوان من 0 الى 15، مثال :
كود FORM1.BACKCOLOR = QBCOLOR (5)
لانشاء الرسوم فى تطبيق يمكن استخدام ايكونات التحكم فى مسطرة الادوات:
كود Shape Control Line Control
اضافة الصور للتطبيق :
من السهل اضافة الصور خلال مرحلة التصميم * لعرض صورعلى سطح الفورمة :- اضغط خاصية picture للفورمة ثم قم باختيار الصورة المراد عرضها على سطح الفورمة * او يمكن استخدام أداة image او picture وذلك بسحب الاداة المطلوبة وادراجها فى الفورمة ، ثم من نافذة الخواص Properties List خاصية picture حمل الصورة المطلوبة لاحظ الفرق بين اداة image ، واداة picture فالاداة picture بها خاصية autosize لامكانية ضبط ابعاد الاداة حسب حجم الصورة ، والاداة image ليس لها هذه الخاصية . كما يمكن استخدام اللصق واللزق / او النسخ واللصق من اى برنامج أخر مثل paint brush
ولتحميل الصورةاُثناء التشغيل :- نستخدم الوسيلة LoadPicture كما يلى ** ادرج على فورمة اداة صورة picture وغير اسمها الى picShow . ** لتحميل صورة home.jpg من الدليل c:\images اكتب الامر كما يلى
كود PicShow.Picture = LoadPicture ("C:\images\home.jpg")
ويمكن استخدام loadpicture لتحميل صورة من اداة/ او صندوق صورىة اخر فاذا كان لدينا اداة image تسمى imgShow فى نفس الفورمة ونريد أن ننسخ الصورة الموجودة فى picShow فى هذه الاداة ، نستخدر الامر التالى :-
كود Set imgDisplay.Picture = PicDisplay.Picture
يمكن استخدام الوظيفة Load Picture لحذف صورة اثناء التشغيل كمايلى :
كود Set imgDisplay.Picture = LoadPicture("")
الرسم فى VB
تستخدم اوامر الرسم فى vb لرسم نقط Pset او خطوط Line او دوائر circle
رسم النقط :- يتم تحديد موقع النقطة على الشئ المراد الرسم داخله ، ولتكن موقع النقطة داخل هذا الشئ هى 50,70 يكون الامر كالتالى
كود Pset(50,70)
يمكن استخدام الالوان - انظر درس الالوان فى vb - كما يلى
كود Pset(50,70),RGB(0,0,255)
جرب المثال التالى لرسم نقط عشوائية على الاداة الحالية
كود sub DrawPointsRnd() R= 255 * Rnd G= 255 * Rnd B = 255 * Rn XPos = Rnd * Scale Width Ypos = Rnd * Scale Height Pset (Xpos, Ypos), RGB ( R,G,B) END SUB
رسم الخطوط والاشكال الرباعية :-
يستخدم امر line لرسم خط بين نقطتين كما يلى
كود line(50,50)-(700,500)
ويستخدم الامر line لتوصيل خط من اخر نقطة تم رسمها لنقطة اخرى كما يلى
كود line -(1000,1000)
لقد تم رسم الخط من اخر نقطة تم رسمها (500,700) الى النقطة (1000,1000) - لاحظ استخدام "-" كما يمكن رسم الاشكال الرباعية - المستطيل او المربع - بألامر line كما يلى
كود Line(500,500)-(1000,1000),,B
لقد تم رسم شكل رباعى طول ضلعه 500 (تويب) من النقطة (500،500) ( اى الى النقط (1000،1000) ويمكن أن نرسم نفس هذا الرسم بأستخدام step والتى نستخدمها لنسب النقط واحدة بالاخرى انظر المثال لتفهم مااعنيه :
كود Line (500,500) - step (1000, 0) Line- step (0,1000 ) Line - step( - 1000 , 0) Line- step ( 0, -1000)
الخطوة الاولى باستخدام step رسمنا خط طوله 1000 تويب من عند النقطة 500 موازيا للمحور x الخطوة الاولى باستخدام step رسمنا خط طوله 1000 تويب من عند النقطة 500 موازيا للمحور y عموديا على الخط الاول وهكذا .. رسمنا الشكل الرياعى باستخدام step لاحظ علامتى ",," فهما يستخدمان لادراج اللون ، كما أن استخدام حرف b يستخدم لرسم شكل رباعى مفرغ ، ولرسم شكل رياعى مصمت نستخدم bf كما يلى
كود line(500,500)-(1000,1000),qbcolor(4),bf
لقد رسمنا شكلا رباعيا مصمتا لونه احمر - راجع درس الالوان - لاستخدام هذه الاساليب لابد من تحديد الكائن Object ، والا سيعتبر VB ان الكائن المراد الرسم عليه هى الفورمة التى تنادى الكود .
***المثال التالى برسم على الفورمة MyForm
كود MyForm.pset( 500, 500)
***المثال التالى يرسم فى صندوق صورة يسمى PicShow
كود PicShow.Pest (500, 500)
***المثال التالى يرسم فى الفورمة الحالية :
كود Pest ( 500 , 500 )
***استخدام CLS لمسح الشاشة :
كود PicShow.cls
رسم الدوائر
كود [Object.] Circle[Step] (x,y), Radius [ , Color]
المثال يرسم دائرة نصف قطرها raduis عشوائى وبالوان عشوائية :
كود Sub CircleDemo ( ) Dim Radius R = 255 * Rnd G = 255 * Rnd B = 255 * Rnd Xpos = ScaleWidth/12 Ypos = ScaleHeight/12 Radius = (( YPOS * 0.9) +1) * Rnd Circle ( Xpos,Ypos) , Radius , RGB(R,G,B) END SUB
لرسم القوس :
لابد من تحديد الزاوية او نقطة البداية والنهاية
كود [ Object.] Circle[Step] (x,y), Radius, [color], Start,End[, aspect]
قيمة aspect هى النسبة بين البعد العمودى و البعد الافقى ويمكن رسم الشكل البيضاوى كما فى المثال التالى :
كود Private sub form-click( ) FillStyle = 0 Circle ( 600, 1000) , 800 ,,,, 3 FillStyle = 1 Circle ( 1800 , 1000) ,800,,,, 1/ 3 END SUB
لاحظ استخدام fillstyle ، فاذا كانت قيمتها = صفر فأن الرسم يكون مفرغا ، واذا كان يساوى واحد فأن الرسم يكون مصمتا
انشاء رسم بسيط متحرك Animation ي مكن انشاء رسم بسيط متحرك وذلك بالتبادل فى اظهار رسمين او اكثر كما يمكن ذلك بتحريك الصورة :
- ضع اداة الصورة PICTURE على سطح الفورمة ، غير الاسم الى picIcon - انسخ هذه الاداة والصقها بالفورمة ، ستظهررسالة لانشاء مصفوفة من اداة الصورة picIcon - كرر ذلك ثانية - اصبح لديك الان ثلاث ادوات لصندوق الصور هى picIcon(0),picicon(1),picIcon(2) - ضع صندوق صورة على الفورمة وغير اسمها الى picDisp - الان من قائمة الخواص حدد الايكونة التى تظهر فى كلا من صناديق الصور الثلاث الاولى وهى صور اشارة المرور الخضراء والانتظار الصفراء والحمراء بالتوالى وستجد هذه الصور فى مكتبة الصور القادمة مع vb6 على مجلد common/graphics/icons/traffic - ضع اداة المؤقت timer - فى حدث timer1_timer اكتب الاوامر
كود Private Sub Timer1_Timer() If Form1.picDisp = PicIcon1(0).Picture Then Form1.picDisp = PicIcon1(1).Picture ElseIf Form1.picDisp = PicIcon1(1).Picture Then Form1.picDisp = PicIcon1(2).Picture ElseIf Form1.picDisp = PicIcon1(2).Picture Then Form1.picDisp = PicIcon1(0).Picture End If End Sub
جرب تشغيل هذا البرنامج ، هل رأيت الاشارات الثلاث يتبادلن الظهور فى صندوق الصور picDisp ، اذا حدث ذلك فقد نجحت والا اعد كتابة البرنامج لاتنسى ان تكتب الامر التالى فى form1_load
كود Form1.picDisp = PicIcon1(0).Picture
هل عرفت لماذا ؟
الان فلتجرب هذا البرنامج : - ضع اداة المؤقت timer ، اضبط مواصفة interval =500 - او اكثر اذا اردت أن تجعل الاستجابة بطيئة - واكتب الاوامر التالية
كود Private Sub Timer1_Timer() Dim OldDrawStyle% OldDrawStyle% = Form1.DrawStyle Form1.DrawStyle = vbSolid DrawRubberBand picDisp.Top, picDisp.Left, picDisp.Height, picDisp.Width Form1.DrawStyle = OldDrawStyle% End Sub
- اكتب الاجراء التالى
كود Sub DrawRubberBand(ByVal x1, ByVal y1, ByVal x2, ByVal y2 As Single) Dim OldDrawMode% OldDrawMode% = Form1.DrawMode Form1.DrawMode = vbInvert
Line (y1 - 10, x1 - 10)-(y2 + y1 + 10, x2 + x1 + 10), , B Form1.DrawMode = OldDrawMode% End Sub
لاحظ استخدام اوامر drawmod ,drawstyle
استخدام Anto Redraw : خاصية AntoRedraw هى خاصية boolean والتى بضبطها الى TRUE يجعل مخرجات الرسم تخزن فى ذاكرة الحاسب . فعند عرض نافذة فوق نافذه اخرى ، يجب حفظ النافذه الاولى بالذاكرة حتى يمكن اعادتها ثانية بعد انتهاء استخدام النافذة الثانية ، لذا يجب ان تضبط خاصة ِAutoRedraw للاولى الى TRUE والثانية الى FALSE ( حتى يمكن الغاؤها تماما
| |
|