الرسم Graphics

تعتبر برامج الرسم سواء فى بيئه نظام التشغيل DOS أو فى بيئه النوافذ من أبسط البرامج بالرغم مما لها من شكل جذاب فى نتيجه التنفيذ ولا يعتمد برنامج الرسم على دوال الرسم فقط بل يعتمد أيضاً على أفكار جيدة لإستغلال دوال الرسم وفى هذا الفصل نستعمل دوال الرسم فى اكثر من مثال مع أفكار مختلفه لإخراج برنامج له فكرة.

دوال الرسم

توجد مجموعه كبيرة من دوال الرسم نذكر بعضها هنا ولمعرفة جميع دوال الرسم ترجع إلى مرجع اللغة أو إلى برنامج المساعدة الخاص بــ Visual C++ (كما فى الشكل 9-1نفضل ذلك)

clip_image001

والجدول التالى يعرض مجموعة من دوال الرسم مع الغرض من كل دالة.

الدالة

الغرض من الدالة

MoveToEX ( )

توجية المؤشر إلى نقطه (إحداثى) معينه على الشاشه.

LineTo ( )

رسم خط إلى نقطه معينه.

Arc ( )

رسم قوس (جزء من دائرة).

Chord ( )

رسم قوس مغلق (توصيل أطرافة بخط).

Ellipse ( )

رسم قطع ناقص.

Pie ( )

رسم شكل بيانى دائرى.

Rectangle ( )

رسم مستطيل.

RoundRect ( )

رسم مستطيل مستدير الأطراف.

SetPixel ( )

رسم نقطه.

PolyLine ( )

رسم شكل متعدد الخطوط.

البرنامج الأول

يقوم هذا البرنامج برسم بعض الأشكال وذلك بإستعمال بعض دوال الرسم وذلك لتوضيح كيفيه استعمال الدوال وتوضيح معاملات هذه الدوال.

ويمكن لك أن تفتح ملف البرنامج vcex 15 من الفهرس vcex9أو متابعه مراحل تصميم وتنفيذ البرنامج وفى النهاية عند تنفيذ البرنامج تحصل على نتيجه التنفيذ الموجودة بشكل 9-2

clip_image002

فى هذا الشكل توجد قائمة اختيارات رئيسية بها قائمة اختيارات فرعية باسم draw إختار قائمة draw تحصل على اختيارات القائمة الفرعية كما بالشكل وهى .و, arc , roundrec , rectangle , ellipse , Line وهكذا كل اختيار يؤدى الى رسم الشكل المقابل للاختيار وعند اختيار Line تلاحظ رسم خط على الشاشه وعند اختيار Ellipse تلاحظ رسم قطع ناقص وهكذا.

مراحل تصميم البرنامج

1. ابدأ برنامج جديد وذلك بإختيار File ثم New ثم workspace Project ثم Ok.

2. فى صندوق اسم المشروع اكتب اسم وليكن vcex15 ثم creat .

3. تحصل على شاشة نوع التطبيق اختار النوع Single document ثم Next.

4. تحصل على شاشة تحديد ملف قواعد البيانات انقر Next لتختار None.

5. تحصل على شاشه تحديد OLE انقر Next.

6. تحصل على شاشه مواصفات البرنامج الأخيره انقر Next ثم Finsh فيتم تخليق برنامج بهذه المواصفات.

7. تصميم الشكل المطلوب للبرنامج

بعد تخليق برنامج بالمواصفات الإبتدائية المطلوبة نقوم بالتعديل فى هذه المواصفات لتناسب الشكل المطلوب كما يلى :

1. انقر رمز ملف الموارد ثم انقر -Resources vcex15تحصل على شجرة ملفات الموارد وبها جميع موارد البرنامج من صناديق حوار وقائمة اختيارات وهكذا.

2. للتعديل فى قائمة الاختيارات انقر على كلمه MENU من شجرة الموارد ثم IDR_MAINFRAME تحصل على الشكل المبدئى لقائمة الاختيارات. باستخدام الفأرة و فى آخر خانه من قائمة الاختيارات اكتب كلمه draw وتحتها اكتب كلمه Line ، و ellipse لتكوين القائمة الفرعية draw وهكذا حتى تحصل على شكل 9-3.

clip_image003

توظيف اختيارات القائمه

يبقى الآن كتابة سطور الدوال التى تنفذ عند اختيار اختيارات القائمه ولتحقيق ذلك اتبع الخطوات التاليه :

- اضغط مفتاحى Ctr+W للحصول على شاشه Class Wizard.

- فى أول صندوق العناصر توجد الفصيلة التى نتعامل معها وهى CMainFrame وهى التى تحتوى على اختيارات القائمه وباقى العناصر.

- اختر ID-DRAW-Line ثم من صندوق الرسائل والمكتوب عليه Messages اختار كلمه Command كما فى الشكل 9-4 ثم Add Function ثم Ok فيتم اضافة دالة للاختيار line.

clip_image005

- كرر الخطوة السابقه مع اختيارات قائمه Draw حتى يتم إضافه دوال لجميع اختيارت القائمه draw.

كتابة سطور الدوال

1. من صندوق العناصر اختار ID-Draw-Line ثم Command ثم Edit Function تحصل على مكان كتابة سطور الدالة Cmain Frame : : On Draw Line( ) اكتب السطور التاليه :

1 : int i;

2: CDC* PDC = Get DC ( );

3 for (i=0;i<1000;i++)

4: {

5: PDC->MoveTo(0,0);

6: PDC ->LineTo (200,200);

شرح سطور الدالة

فى السطر رقم 2 اعلان للمتغير PDC من نوع CDC وهو متغير يشير إلى شاشه الرسم وذلك نتيجه استدعاء الدالة Get DC( ) فى هذه الحاله نستطيع إستعمال دوال الفصيلة CDC وهى دوال الرسم كما فى السطر رقم 7 حيث تم استدعاء الدالة LineTo( ) مع إرسال قيمتين فقط وهما إحدائى النقطه المطلوب رسم خط إليها والنقطه الأولى للخط هى النقطه الحاليه فإذا لم يتم تحديدها تكون هى النقطه 0 , 0. ويتم تكرار رسم الخط بدوارة for الموجودة فى السطر رقم 3فتحصل على شكل جمالى من الخطوط

2- سطور دالة رسم شكل بيضاوى

فى نفس الملف تجد مكان لدالة رسم الشكل البيضاوى (Ellipse) التى تم إضافتها وتأخذ الاسم Cmain Frame : : On Draw Ellipse( ) اكتب السطور التالية :

// To Do : Add Your Command here....

1 : int i;

2: CDC* PDC = GetDC ( );

3 for (i=0;i<1000;i++)

4: {

5: PDC->MoveTo(0,100);

6: PDC ->Ellipse(25+i,150,400,i);

}

شرح سطور الدالة

فى السطر رقم 2 تم إستدعاء الداله Ellipse ( ) وتم إرسال أربعة معاملات لها المعامل الأول والثانى هما إحداثى نقطة الركن العلوى الشمالى لمستطيل والمعامل الثالث والرابع هما إحداثى نقطة الركن السفلى الأيمن للمستطيل ويتم رسم القطع الناقص تلقائى بحيث يمس سطح القطع الناقص للإضلاع الأربعة للمستطيل كما فى الشكل9-5

clip_image006

3- سطور دالة رسم مستطيل

فى نفس الملف تجد مكان لدالة رسم المستطيل بالأسم Cmain Frame : : OnDrawRec ( ) ، اكتب السطور التالية :

1 : int i;

2 : CDC* PDC = Get DC ( );

3 : for (i=0;i<1000;i++)

4 : {

5 : PDC->MoveTo(0,100);

6: PDC -> Rectangle (50,150, 400,i);

}

2:

شرح سطور الدالة

فى السطر رقم 2 تم استدعاء الداله Rectangle ( ) لرسم المستطيل مع إرسال أربعه معاملات للدالة ، المعامل الأول والثانى احداثى النقطه الشماليه العليا للمستطيل ، المعامل الثالث والرابع هما احداثى النقطه اليمنى السفلي للمستطيل.

4- سطور دالة رسم قوس

بنفس الطريقه تجد دالة رسم القوس بالاسم Cmain Frame : : On Draw Arc ( ) اكتب السطور التاليه:

1: CDC* PDC = Get DC ( );

2: PDC ® Arc (100,100,200,200,150,175,175,150);

شرح سطور الدالة

فى السطر رقم 2 تم استدعاء الداله Arc( ) مع ارسال 8 معاملات للداله ، المعاملات الأربعه الأولى إحدثيات مستطيل يرسم بداخلة شكل بيضاوى المعاملات الأربعه التاليه هى احدثيات نقطتين هما نقتطى تقاطع الشكل البيضاوى مع المستطيل ليعطى القوس المطلوب كما فى الشكل 9-6 .

clip_image007

5- سطور دالة المستطيل المستدير لإطراف round rectangle

هى نفس سطور دالة رسم المستطيل مع استعمال داله رسم المستطيل المستدير الاطراف كما يلى :

DCD* PDC = Get DC( );

PDC ® Round Rect (50,300,150,400);

6- سطور دالة رسم القوس المغلق Chord

هى نفس سطور دالة رسم قوس Arc ( ) مع استعمال الداله chord التى تعطى قوس مع توصيل أطرافه بخط كما يلى :

CDC * PDC = Get DC( );

PDC ® Chord (100,100,200,200,150,175,150,175);

قم بترجمة وتنفيذ البرنامج وجرب اختيارات قائمة draw تلاحظ ظهور رسمه مع كل اختيار

االبرنامج الثانى

فى هذا البرنامج نرى كيفيه تغيير مواصفات نوع ولون خط الرسم من خلال برنامج للرسم الحر ، ويمكن لك فتح ملف البرنامج vcex16من الفهرسchpt 9 ، وبعد تنفيذ البرنامج تحصل على شكل 9-7

clip_image009

وفيه مثال للرسم الحر بأستخدام الفأرة جرب تحريك الفأرة ومحاولة الرسم بها .

مراحل تصميم البرنامج

1. ابدأ برنامج جديد من نوع Single document بنفس الخطوات المتبعه فى البرنامج السابق حتى تصل إلى الخطوة Finsh ثم Ok. ليتم تخليق برنامج بالمواصفات الافتراضيه

كتابة سطور البرنامج

2. اضغط مفتاحى Ctr+W للوصول إلى شاشة Class Wizard من صندوق العناصر اختار Ccvex16 View ثم من صندوق الرسائل اختار الرسالة WM-Mouse Move ثم Add Function ثم Edit Function.

3. فى مكان الدالة اكتب السطور التالية :

1: if ( (n F Lages & MK_LBUTTON) = = MK_LBUTTON)

2: CDC* PDC = Get DC( );

3: Cpen np (PS-SOLID,10,RGB (255,0,0));

4:// Cpen* Po2 = PDC -> SelectObject (cnp);

5: CRect ctr (point.x-10, point.y -10, point.x, point.y);

6: PDC -> Ellipse (ctr);

7: PDC -> Select Object (P02);

شرح سطور الدالة

فى السطر رقم 1 جملة if لإختبار حالة الطرف الشمال للفأرة (الماوس) عند حركة الفأرة (أى إذا ضغط المستخدم على الطرف الشمال للماوس وهو يحركها).وفيه يتم تنفيذ سطر رقم 2 المتغير PDC للإشارة إلى شاشه الرسم.

فى السطر رقم 3 تعريف نوع ولون خط الرسم وذلك بتعريف متغير من النوع (الفصيله) Cpen بالاسم np بالمواصفات التاليه :

PS-SOLLD : وهو نوع خط الرسم وهذا النوع معناه خط متواصل وتوجد أنواع أخرى من الخطوط سوف نعرضها فيما بعد .

الرقم 10 : هو سمك الخط المطلوب.

الداله RGB( 255 ,0,0) : تحدد لون الخط وذلك بثلاث معاملات الأول هو مقدار اللون الأحمر والثانى مقدار اللون الأخضر والثالث مقدار اللون الأزرق يقيم من 0 : 255 لكل لون وكلمه RGB اختصار العبارة Red , Green, Blue والمعاملات هى خليط هذه الألوان ليعرض اللون المطلوب وفى حالتنا هذه تقدر أكبر قيمة للأحمر ، وصفر للأخضر والأزرق فيكون اللون هو أحمر صافى .

فى السطر رقم 4 الدالة Select Object ( ) لجعل خط الرسم هو الخط الذى تم تحديد مواصفاته بالمتغير np.

فى السطر رقم 5 اعلان متغير بالاسم ctrمن نوع CRect أى مستطيل واعطائه احدثيات هى الأول والثانى هما المتغيران x,y وهما احداثى الفأرة ولكن بعد طرح القيمه 10 من كلاً منهما ، المعامل الثالث والرابع هما المتغيران x,y وبالتالى يتم رسم دائرة تمس هذا المستطيل.

فى السطر رقم 6 استدعاء الداله Ellipse ( ) التى ترسم دائره تمس اضلاع المستطيل المعرف فى المتغير .ctr

وبهذا إذا ضغط المستخدم على الطرف الأيسر للفأرة وحركها يتم رسم الدائره التى تم تعريفها وهو ما يسمى بالرسم الحر.ترجم ونفذ البرنامج وجرب استعماله تحصل على شكل جمالى للرسم الحر.

الأشكال المختلفه لخطوط الرسم (Pens)

الجدول التالى يعرض المتغيرات المستخدمه للأشكال المختلفه لخطوط الرسم والمعنى المقابل لها.

نوع الخط

المعنى

PS-SOLID

لرسم خط عادى (متواصل) ] ـــــــــــــ[

PS-DASH

لرسم خطوط بشكل شرط ] - - - -[

PS-DOT

لرسم خطوط بشكل منقط ] ..........[

PS-DASHDOT

لرسم خطوط بشكل شرطه ثم نقطه ] - . - . -[

PS-NULL

PS-INSIDEFRAME

جدول بأنواع خطوط الرسم

الكتابة بفونتات مختلفه

تحتاج أحياناً لتغير مواصفات خط الكتابة ، وفى لغة vc++ تستطيع تغير مواصفات خط الكتابة من حيث نوع الخط ، وحجم الخط ، وزاوية كتابة الخط.

وقبل متابعه البرنامج الذى يوضح لنا كيفيه تغيير مواصفات خط الكتابة نرى أولاً الدوال المستعملة فى ذلك.

دوال التعامل مع الفونتات

لتغيير مواصفات فونتات الكتابه نستعمل أحد الدالتين الآتيتين :

Create Font ( ) , Create Font Indirect ( )

والصورة العامة للدالة Create Font ( ) هى :

CreatFont (Height,Width,Escapement,Orientation,Weight,

Italic,UnderLine,StrikOut,CharSet,

Output Precision,Clip Precision,Quality,

Pitch And Family,Facename)

ملحوظة : ليس عليك حفظ هذه المعاملات لأنك تستطيع معرفة معاملات أى داله بكتابة اسم الداله ثم توقف المؤشر (Cursor) على اسم الداله ثم تضغط المفتاح F1 تحصل على شرح كامل لهذه الداله ومعاملاتها ووظيفة كل معامل.

والجدول التالى يوضح معانى اهم هذه المعاملات :

المعامل

المعنى والإستخدام

Height

يستخدم لتغيير أرتفاع الحرف (البعد الرأسى للحرف).

Width

يستخدم لتغيير عرض الحرف (البعد الأفقى للحرف).

Weight

لتحديد درجه ثقل الحرف وتأخذ رقم كلما ذاد هذا الرقم ذاد درجه الثقل والقيمة 400 تعطى الخط الطبيعى والقيمه 700 تعطى خط ثقيل (Bold)

Italic

وتأخذ إحدى القيمتين القيمة True بمعنى أن الخط مائل أو القيمة FALSE بمعنى أن الخط غير مائل.

Under Line

وتأخذ أحد قيمتين ، القيمة True بمعنى رسم خط مستقيم أسفل الكلام والقيمة FALSE بمعنى عدم رسم خط أسفل الكلام.

Strike Out

نفس عمل الخاصيه Under Line ولكن الخط يرسم فى منتصف الكلام.

- والصورة العامة للدالة CreateFontIndirect () هى :

CreateFontIndirect (IP Log Font)

وفى هذه الدالة المعامل Lp Log Font عبارة عن سجل (Structure) يحتوى على مواصفات الخط ، وسيتضح ذلك من المثال التالى وشرح سطور ه

مثال : الكتابة بفونتات مختلفه الحجم والزاوية

المثال التالى يوضح لنا كيفيه إستعمال الدالتين السابقتين فى الكتابة على الشاشه بخطوط مختلفه الحجم ومختلفه فى زاوية الكتابة ، ويمكن لك أن تفتح ملف البرنامج vcex 17 من الفهرس chpt 9 او تتابع معنا مراحل تصميم البرنامج وتنفيذه تحصل على الشكل 9-8.

clip_image011

الشكل 9-8 عبارة عن برنامج من نوع SDI به قائمة اختيارات ، منها قائمة فرعية باسم Fonts ، وتحتوى القائمه الفرعيه Fonts على ثلاثه اختيارات هى : Fontsize, Font Ang ، Fontex1، وعند تحديد الاختيار الأول تحصل على العبارة “ENG.AZAB” مكتوبه فى إتجاهين رأسى و أفقى ، وعند تحديد الاختيار Font Ang تحصل على قائمه فرعية بثلاثه اختيارات هى 40و80 و100 وكل اختيار يطبع العبارة السابقه بزاوية مختلفة وكذلك عند تحديد الاختيار Font Size تحصل على قائمه فرعيه بثلاثه اختيارات هى 30و70و120 وكل اختيار يطبع العبارة السابقه بحجم مختلف جرب تنفيذ جميع الاختيارات تحصل على الشكل 9-8 وفيه تظهر الكلمات بأحجام وزوايا مختلفه.

مراحل تصميم البرنامج

1. ابدأ برنامج جديد وحدد نوعه من النوع SDI وحدد له اسم وليكن vcex 17 ، وتابع باقى الخطوات كما سبق حتى تحصل على برنامج بالقيم الافتراضيه من نوع SDI.

2. قم بتغيير قائمه الاختيارات (MENU) لتوافق الشكل المطلوب شكل 9-9.

clip_image013

3. ابدأ فى كتابة سطور البرنامج كما يلى :

- من قائمه اختيارات البرنامج حدد الاختيار الأول (Fontex1).

- اضغط المفتاحين Ctr+W تحصل على شاشه Class Wizard.

اختار من صندوق العناصر الاختيار ID-Fonts-Fontex1 ومن صندوق الرسائل اختار Command ثم Add Function ثم Ok بهذا تم إنشاء دالة للإختيار Fontex1.

- كررالخطوه السابقه مع باقى اختيارات القائمه لإضافه دوال لإختيارات القائمه.

- ابدأ فى كتابة سطور الدوال كما يلى :

- اضغط المفتاحين Ctr+W تحصل على شاشه Class Wizard اختار من صندوق العناصر ID-vcex16 -Fontex1 ثم Command ثم Edit Function واكتب سطور الدوال كما يلى :-

سطور داله لإختيار Fontex1

اكتب السطور التاليه :

1: CFont hn Font,hn Font2;

2: CDC* P=Get DC ( );

3: hnFont. Creat Font (40,0,400,900, FW-NORMAL,FALSE,

FALSE,FALSE,DEFAULT-CHARSET,OUT-DEFAULT-PRECIS,

CLIP-DEFAULT-PRECIS,DEFAULT-QUALLTY,49,”Roman”);

4: CFont * ho Font = (C Font *) P -> SelectObject (hn Font);

5: P ->TextOut (180,210, “Eng.AZAB”);

6: HNfONT2.Creat Font (40,0,0,0,FW-NORMAL,FALSE,

FALSE,FALSE,DEFAULT-CHRSET,OUT-DEFAULT-PRECIS,

CLLP-DEFAULT-PRECIS,DEFAULT-QUALITY,49,”Roman”);

7: CFont * ho Font2 = (CFont *) P ® SelectObject (hnFont2);

8: P -> TextOut (180,210, “Eng AZAB”);

شرح سطور الداله

* فى السطر رقم 1 اعلان عن المتغيرات hnFont, hnFont2 من النوع CFont (النوع CFont عبارة عن فصيلة تحتوى على جميع عناصر التعامل مع الفونتات).وبالتالى للتعامل مع دوال الفونتات نتعامل مع المتغيرات.

* فى السطر رقم 2 المتغير P من نوع CDC (والنوع CDC فصيلة تشير إلى جميع عناصر منطقه الرسم كما سبق ) والدالة GetDC ( ) تعيد مواصفات منطقه الرسم وتجعل المتغير P يشير إليها حتى يتم الرسم فيها .

* فى السطر رقم 3 يتم استدعاء الداله CreatFont ( ) لتغير مواصفات الفونت (خط الكتابة) وذلك حسب معاملات الدالة كما تم توضيحها فى الجدول السابق ، وفى هذه الداله أخذ المعامل الأول القيمه 40 قيمه أرتفاع حرف الكتابه ، وأخذ المعامل الثالث والرابع القيمه 900,900 يعبران عن زاوية رسم الحرف على الشاشه لذلك تكتب الكلمات بشكل رأسى.

* فى السطر رقم 4 يتم استدعاء الداله SelectObject ( ) لاختيار نوع الفونت الذى تم تحديد مواصفاته (h Font) على أنه النوع الحالى للخط.

* فى السطر رقم 5 يتم استدعاء الداله Text Out ( ) لكتابة العبارة “Eng.AZAB”.فيتم كتابة العباره بالمواصفات التى تم تحديدها وهى الكتابة بخط راسى.

* فى السطر رقم 6 ، 7 ، 8 تكرار لما سبق مع تغيير فى معاملات الداله Creat Font ( ) للكتابة بخط أفقى.

* ترجم ونفذ البرنامج عند هذه المرحلة تلاحظ كتابة عبارة بالخط الافقى والرأسى .

سطور الداله ON_ID_FontAng-300

هذه الداله تقوم بطباعة العبارة Eng . AZAB بزاوية ميل 30 درجه ولكتابه سطور هذه الداله إتبع ما يلى :

- اضغط المفتاحين Ctr+W تحصل على شاشه Class Wizard.

- اختار من صندوق العناصر السطر ID-Fonts-FONT Ang-300 ثم Command ثم Edit Function. اكتب السطور التالية :

1: CFont hNFont4;

2: CDC* P4=Get DC ( );

3: static LOGFont LF;

4: LF . LF Weight = FW_HEAVY;

5: LF . LF Char Set=DEFAULT-CHARSET;

6: LF . LF PitchandFamily =34;

7: LF . LF Escapement =300

8: LF . LF Height =40;

9: hN Font4 . CreatFontIndirect (&LF);

10: C Font * ho Font4 = (Cfont *) P4 ® SelectObject (hNFont4);

11: P4 ® TextOut (180,210, “Eng .AZAB:);

شرح سطور الداله

* السطور 1، 2 كما سبق فى الدالة Fontex1 السابقه.

* فى السطر رقم 3 اعلان عن المتغير LF من نوع LOG Font ، والنوع LOG FONT عبارة عن سجل (Structure) عناصره هى مواصفات خط الكتابة.

* السطور 4 ، 5 ، 6 ، 7 ، 8 هى تسجيل مواصفات خط الكتابة عن طريق اعطاء قيم خط الكتابة لعناصر سجل المواصفات

* فى السطر رقم 7 تسجيل العنصر LF Escapement بالقيمه 300 ومعناها جعل زاوية كتابة الخط هى 30 درجه. كما فى نتيجه التنفيذ.

* فى السطر رقم 9 استدعاء للداله CreatFontIndirct ( ) لتخليق فونت (خط كتابة) بالمواصفات التى تم تسجيلها فى السجل lf والمواصفات التى لم يتم تسجيلها تأخذ القيمه الإفتراضيه لها.

* فى السطر رقم 10 الداله Select Object ( ) لجعل الفونت الذى تم تخليقه هو الفونت الحالى للكتابة.

* والسطر رقم 11 الداله TextOut ( ) لطباعة العبارة Eng.AZAB بالخط الحالى.

سطور الداله ON-ID-FONTS-FONT Ang- 70

وهذه الداله تقوم بطباعة العبارة "Eng.AZAB” بزاوية ميل 70درجه وبنفس الخطوات السابقه اكتب السطور التاليه :

1: CFont hNFont4;

2: CDC * P4 = Get DC ( );

3: Static LOG Font LF;

4: LF . LF Weight = FW-HEAVY;

5: LF . LF CharSet = DEFULT-CHRSET;

6: LF . LFPitchAndFamily = 34;

7: LF . LF Escapament = 700;

8: hNFont4. Create Font Indirect (&LF);

9: Cfont * hoFont4 = (Cfont *) P4->SelectObject (hnFont4)

10: P4 -> TextOut (180,150, “Eng.AZAB”);

ملحوظة : يمكن استعمال عمليتى النسخ واللصق فى نسخ سطور الداله السابقه ولصقها فى مكان هذه الدالة والدوال الباقيه وذلك لوجود فروق بسيطه بين سطور الدوال.

الجديد فى سطور الداله

فى هذه الداله تم تغيير زاوية الكتابة من 30 إلى 40 وذلك كما فى السطر رقم 7 حيث تم تسجيل المتغير LF Escapement بالقيمة 450.وباقى السطور كما سبق وبالتالى تصبح مواصفات الخط الجديد هى الكتابة بزاوية ميل 45 درجة ويظهر ذلك بطباعة العبارة ENG . AZAB فى السطر 15

سطور الداله ON-ID-FONTS-FONT Ang- 120

هذه الداله تقوم بطباعة العبارة “Eng.AZAB” بزاوية ميل 12 0 درجه وهى نفس سطور الدالتين السابقتين مع تغيير زاوية الميل وذلك . يمكن لك نسخ سطور الداله السابقه مع تغير السطر رقم 7 إلى السطر التالى :

LF . LF Escapement = 1200;

والشرح كما فى الدالتين السابقتين.

سطور دوال تغير أحجام الكتابه

فى هذا البرنامج ثلاث دوال لتغيير حجم الكتابة ، وسطور هذه الدوال متشابهه لذلك سوف نكتب سطور داله واحدة ثم نكتب الفرق فى الدالتين الباقيتين مع ملاحظه وجود النص الكامل للدوال فى القرص المصاحب للكتاب.

سطور الداله On_FONT_ Size40

هذه الداله تقوم بطباعة العبارة “Eng.AZAB” بخط أرتفاعه 40 نقطه وسطور هذه الداله كما يلى :

1: CFont hNFont4;

2: CDC* P4 = Get DC ( );

3: Static LOG Font LF;

4: LF . LF Weight = FW-HEAVY;

5: LF . LF Pitch And Family = 34;

6: LF . LF Escapement = 0;

7: LF. LFHeight = 40;

8: hNFont4 . CreatFontIndirect (&LF);

9: CFont * ho4 = (Cfont *) P4 -> SelectObject (hNFont4);

10: P4 -> TextOut (180,150, “Eng.AZAB”);

فى هذه السطور فى السطر 6 تم تحديد زاوية ميل خط الكتابة بالقيمه 0 وبالتالى يكون خط الكتابة أفقى

فى السطر رقم 7 تم تحديد أرتفاع خط الكتابة بالقيمه40 وبالتالى تكون مواصفات الخط هى الكتابة بخط افقى وبارتفاع مقداره 40نقطة فيظهر ذلك فى نتيجة السطر 15 وباقى السطور كما سبق.

سطور الداله On _ FONT_ Size 80

هذه الداله تقوم بطباعة العبارة “Eng.AZAB” بخط أرتفاعه 80 نقطه وهى نفس سطور الداله السابقه مع تغيير ارتفاع خط الكتابة ومكان الكتابه ,ولكتابه سطور هذه الداله انسخ سطور الداله السابقه مع استبدال السطرين رقم 7 ورقم 10 بالسطرين التاليين :

7: LF . LF Height = 80

10: P4 ® TextOut ( 120 , 90 “Eng.AZAB”);

سطور الداله On-Font Size 100

تقوم هذه الداله بطباعة العبارة “Eng.AZAB” بخط أرتفاعه 100 نقطه وهى نفس سطور الداله ولكتابه سطورها انسخ سطور الداله السابقه مع استبدال السطرين 7 ، 10 بالسطرين التاليين :

7: LF . LF Height = 100.

10: P4 ® TextOut (100,160 , “Eng.AZAB”);

وترجمة وتنفيذ البرنامج .

-ترجم ونفذ البرنامج بالضغط على المفتاحين Ctrl + F5.

-جرب استعمال اختيارات قائمه اختيارات البرنامج وتغيير حجم الكتابة مع ملاحظة النتيجة . كما فى الشكل 9-10

clip_image015

تعليقات

المشاركات الشائعة من هذه المدونة

المؤثرات الحسابية في C++

دوال النمط الرسومي في ++C