المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : تعلم الرسومات في الفيجوا بيسك .الجزء الاول



الموت الغريب
12-11-2009, 02:59 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, , 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 ( حتى يمكن الغاؤها تماما ).



---


[COLOR=blue]الموت الغريب

http://file7azm.info/do.php?img=807