السلام عليكم ورحمة الله وبركاته أما بعد:
اخواني العضاء الاعزاء سوف نتكلم في هذا الدرس عن الرسم في فيجوال بيسك 2005 وماهو الفرق الجوهري بينه وبين فيجوال بيسك 6 في الرسم
أولا الرسم في فيجوال يسك 2005 يختلف اختلافاً كبيرا عنه في سابقه فيجوال بيسك 6 حيث كان في فيجوال بيسك 6 وخاصة في كل أداة او كائن طرق وخصائص مختصة بالرسم،فنجد مثلا في كائن النموذج الحبيب Form الطريقة مثلا Line والمعروفة برسم الخطوط وكذلك الاداة Circle والمعروف من اسمها أنها مخصصة لرسم الدوائر ولكن في فيجوال بيسك 2005 فالاختلاف كبير حيث لايوجد في أي أداة هذه الطرق،وليس معنى ذلك أنه لايوجد في فيجوال بيسك 2005 امكانية الرسم أقولكم وبكل سراحة امكانية الرسم في فيجوال بيسك 2005 هائلة جدا حيث أنه يعتمد في فيجوال بيسك 2005 في الرسم على سياق الجهاز وأقصد بسياق الجهاز وهو كما يسمونه في الرسم بلوحة او ورقة الرسم وورقة الرسم في فيجوال بيسك 2005 هي الادوات أو الكائنات المختصة بالرسم.
طيب أين هذا السياق يا ابوعزام ومااسمه وكيف نصل إليه :unsure: ؟
أقولك أخي الحبيب وبكل ود ومحبة وبابتسامة تملأ وجهي لاتستعجل فالسياق موجود واسم السياق هو Graphics وسؤالك عن كيفية الوصول إليه تجده من ضمن الكائنات القابلة للرسم مثل كائن النموذج والادوات وغيرها وقصدي بالرسم هو ليس فقط بالرسم في المخرجات ولكن حتى الطباعة تعتبر في فيجوال بيسك 2005 من الرسم .
ماذا تقصد بذلك يا أبوعزام أن الطباعة من الرسم :blink: وكيف ذلك ارجوا التوضيح ؟
حسنا سوف أوضح مع ان الموضوع ليس موضوع الطباعة ولكن أريد أن أخبرك أن الطباعة في فيجوال بيسك 6 وخاصة كائن الطباعة المشهور printer والامر المسكين EndDoc قد انتهى واختفى الله المستعان على الأقل لو يتركون هذا الامر حتى يذكرنا بالقديم كما يقول المثل "قديمك نديمك" ولكنهم يأخذون بالمثل القائل"اللي فات مات" ههههههههه فتحنا الباب للأمثال :P المهم أن هذا الكائن ليس له وجود ولكن وجد بدلا منه الفئة PrinterDocument وهي متعلقة تعلق كبير بالسياق الرسم ربما تقول لي كيف ذلك وضح أكثر فأقول لك معتذراً أن الدرس مختص بالرسم بشكل عام وليس بالطباعة وربما سوف احاول بإذن الله وضع درس مختص بالطباعة .
لاأريد أن أطول عليكم ولكني سوف أبدأ الان بتعليمك طريقة التعامل مع سياق الرسم (Graphics) .
أولا توجد طريقتين للتعامل مع سياق الرسم :
طبعاً سياق الرسم هذا عبارة عن فئة بالاسم نفسه أي graphics ولايمكنك إنشاء نسخة منها بالعبارة new لذلك يجب أن تسند لها السياق المطلوب.
الطريقة الاولى :عن طريق اسناد سياق الرسم الخاص بالكائن أو الفئة القابلة للرسم
dim Grp as graphics=e.Graphics
يجب أن تعلموا لاتستعمل إلا داخل الاحداث والدليل على ذلك الحرف e ربما تقول لي ما معنى الحرف e ومادخله بالحدث سوف أقول لك أن في كل حدث يوجد وسيطين كماهو معروف الوسيط Sender والوسيط e ولن أشرح معناه لأن درسنا كما قلت مختص بالرسم وليس بالاحداث .
المهم باختصار شديد الوسيط e هو عبارة عن وسيط الكائن القابل للرسم وللتوضيح سوف اضع لكم مثال يوضح ذلك
الان افتح مشروع جديد في فيجوال بيسك وادخل على الكود واختار من نافذة الاحداث الخاصة بالنموذج الحدث Paint (بعض المبرمجين يقولون أنه أي كائن لايوجد به الحدث paint أي انه ليس قابل للرسم فأقول له ليست كل الكائنات تستقبل الحدث paint فكائن الطباعة printerDocumnet لايوجد به حدثا بالاسم paint ولكن يمكن أن نقول أي حدث مختص بالرسم كالحدث paint والحدث Print في كائن الطباعة)
الان بعد اختيارك للحدث ستجد من ضمن وسائط الحدث الوسيط e ونوع الوسيط هو eventargs أو ما يطابقه وهذا الوسيط هو الواسطة بين الرسم وسياق الجهاز وإذا قلت لي كيف ذلك اقول لك سوف يتوضح لك كل شيء وقته .
المهم أنك تضع الكود الخاص بالطريقة الاولى في داخل الحدث حتى يمكنك رسم أي شيء على النموذج .
الطريقة الثانية :وهي انشاء كائن رسم جديد عن طريق الطريقة CreateGraphic الخاصة بكائن النموذج او الادوات مثال
dim Grp as Graphics=form1.CreateGraphics
ولكن هذه الطريقة تستهلك أكثر من موارد النظام ويجب عليك قتل الكائن باسناد الكلمة nothing وكذلك طريقة المسح Dispose
Grp=Nothing Drp,Dispose
ولذلك أكثر المبرمجين يعتمدون على الطريقة الاولى أكثر .
الان تعلمنا كيفية التعامل مع سياق الجهاز أي أن ورقة الرسم جاهزة ولم يبقى إلا أدوات الرسم
لعلمكم أني لن أتكلم عن كل الطرق الخاصة بالرسم حيث تحتاج لمرجع كامل في هذا وسوف اتكلم عن بعض الطرق.
أولا /الطريقة DrawLine مثلها مثل الطريقة Line في فيجوال بيسك 6 ولكن تحتاج فقط إلى لون القلم وشكرا لفيجوال بيسك حيث قدم لنا مجموعة كبيرة من الالوان وذلك في أول وسيط للطريقة (أي عندما تفتح القوس )والوسائط الباقية الاربعة بالترتيب y2,x2,y1,x1 هي المحاور السينية والصادية و
لنجرب لذلك معا الان في نفس المشرع الذي فتحته وفي نفس اجراء الحدث paint الخاص بالنموذج اكتب التالي
dim Grp as Graphics=e.Graphics Grp.DrawLine(Pens.Black,0,0,200,200)
الطريقة الثانية :طريقة رسم المستطيلات DrawRectangle
وهذه الطريقة تستخدم لرسم مستطيلات ووسيطات هذه الطريقة نفس وسيطات الطريقة السابقة ولكن الوسائط الاخيرة هي المحور السيني(X) والمحور الصادي(Y) والعرض والارتفاع .
يمكننا ان نوضح لكم أن المحور الصادي يشبه لحد كبير الخاصية Top في فيجوال بيسك 6 والمحور السيني يشبه الخاصية left لذلك يمكن أن نقول أن المحور السيني يزيد كلما اتجهنا لليمين وينقص كلما اتجهنا لليسار والمحور الصادي يزيد كلما اتجهنا للاسفل وينقص كلما اتجهنا للاعلى والنقطة العائمة (0،0) هي في الركن العلوي الايسر لسياق الجهاز أي للكائن .
حسنا لنجرب رسم مستطيل اضف هذا السطر للاسطر السابقة
Grp.DrawRectangle(pens.red,0,0,200,200)
طبعا لعلمك أن الطريقة رسم المستطيل تم اعادة تعريفها ثلاث مرات يمكنك ان تختصر الطريق وتقوم برسم نفس المستطيل ولكن مع جعل الوسيط الثاني معرف جديد من الفئة rectangle وتضع نفس الوسائط داخل هذه الفئة أي هكذا
Grp.DrawRectangle(pens.Green,new rectangle(0,0,200,200))
الطريقة الثالثة/هي طريقة كتابة النصوص أي بمعنى آخر طباعة النصوص أو رسم النصوص وهي الطريقة DrawString وهذه الطريقة تطلب معرف جديد من النوع font لاتخاف سوف اوضح لك طريقة سهلة لرسم النصوص ،بالنسبة للوسيط الاول هو وسيط النص المراد طباعته والثاني هو وسيط الخط من الفئة font والثالث وسيط لون الفرشاة وهو لون وسيط لون القلم المستخدم في رسم الخطوط والمستطيلات والفرق بينهما ان الفرشاة كماهو معروف تستخدم للتلون وكتابة النصوص والقلم لرسم الخطوط والدوائر وغيرها والوسيطين الاخرين يحددان مكان رسم النص على الجهاز وهما الوسيطان x,y .
لتجربة ذلك اضف هذا السطر للاسطر السابقة أو احذف ماعدا السطر الاول واضف هذا السطر
grp.drawstring("منتديات الفريق العربي للبرمجة",new font("Andalus",20),100,100)طبعا لعلمك يمكنك ان شاء نسخة من الفئة font في بداية الصفحة وإضافة ماتريد من الخصائص للفئة وضبط النص وبعد ذلك الحاق متغير الفئة الذي انشأته مكان السطر
new font("Andalus",20)طبعا هذا مااستطعت أن أضيفه هنا وشكرا.
نسيت أن أخبركم كتلميحة خفيفة يمكنكم وضع هذا الكود كله في مكان الحدث الخاص بالكائن printDocument وهو الحدث printpage ثم وضع نفس الكود لاتزيد عليه ولاتنقص وستجد ان الطباعة بدأت تعمل لديك وسوف يتم طباعة المخرجات على الطابعة بدلا من النموذج (طبعاَ هذا إن وجد طابعة في الجهاز <_<
