الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال عن مكتبة graphics.h

مغلق
بدأه السهم الناري في 13 أكتوبر 2003 · 6 رد · 2,891 مشاهدة · في ارشيف قسم C/C++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته:

لقد سألت مرة عن الدوال الجاهزة التي تقوم بالرسم في لغة السي ولكن حصلت على جواب لم أفهمه جيدا ورجعت إلى مرجع وحصلت على دوال تقوم بالرسم مثلا:

الدالة line() التي ترسم خطا مستقيما ولكن المشكلة أن المكتبة التي تحتوي عليها الدالة يعطيني المترجم( compiler ) خطأ عند كتابتها فأسالكم أين الصحيح وهل هذه المكتبة والدوال موجودة فعلنا في لغة السي أم أن هنالك أشياء جديدة لا أعرفها علمن أنني مطالب بمشروع معين وفي حاجه ماسه لحل هذه المشكلة بارك الله فيكم وفي جهودكم .

المكتبة هي :

#include <graphics.h.>

فما هو الصحيح :

والى اللقاء.

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#2

السلام عليكم,

إنني ربما أتدكر مشكلتك.

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

ففعلا المكتبة graphic.h لا توجد مع Standard .

وكمثال بسيط هده الأسطر سترسم سطرا على المكتب يبدأ من أعلى اليسار وسيتجه عموديا نحو الوسط وليظهر هدا يجب أن تخلي هدا الجانب من المكان وحبدا أن هدا المكان لا يكون أسود حتى يظهر الخط علما أنه يمكننا بالطبع تغيير الألوان وسمك السطر :

POINT pt;
HDC hdc=GetDC(NULL);
MoveToEx(hdc,0,0,&pt);
LineTo(hdc,200,200);
DeleteDC(hdc);

أتمنى أن يفيد هدا.

وإلى اللقاء.

#3

بارك الله فيك أخ chik اذا تريد مساعدتي واظنك لن تتأخر لابد أن تشرح لي الدالة التي تقوم في ذلك في برمجة الوندز لاني ماتعلمت الا لغة c ولغة ++c الاساسيات فقط وبعض من التركيز على ++c .

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

اذا كنت تستطيع شرح الدالة التي ترسم الاشكال السابقة فياليت تشرحلي هذه الدالة وتطعمها بمثال عملي لطباعة أي شكل المهم أن يكون هنالك مثال واحد وانا أن شاء الله يكفيني مثال بأذن الله.

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

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#4

الاخ العزيز بالنسبة للسؤالك فالأجابة عندي

اولا: مكتبة الرسم او Graphics يلزم لها تهية والا قبل اتخدامها التي هي

()initgraph وبعدها يمكننك رسم اي شي سوا خطوط او حتي دوال

واليك برنامج بسيط يستخدم لرسم النقطة:

#include <graphics.h>

#include <stdio.h>

#include <conio.h>

void main(void)

{ int gdriver,gmode;

gdriver=DETECT;

initgraph(&gdriver,&gmode,"");

putpixel(50,100,15);

getch();

closegraph();

}

ويمكن ان تعمم هذا المثال علي الخطوط وحتي المربعات وغيرها

فقط اكتب امر رسم الخط مع احداثياتة x1,y1,x2,y2 وسوف تري النتيجة

وشكرا.

#5

السلام عليكم,

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

وفيما يخص الرسم فيجب أولا أن نعرف في أي مكان سنرسم أو على أي نافدة ولكي نرسم يجب أن نطلب الإدن من السيستم ليسمح لنا بدلك وسنطلب منه أن يهيء لنا دلك بأن يعطينا نوعا من الهاندل لأداة الرسم أو الشاشة التي سوف نرسم عليها والتي تكون لها علاقة مع النافدة التي نريد. وهدا الهاندل الجديد هو من نوع HDC أو Handle for Device Context وإدا كانت عندنا نافدة رقمها هو hwnd فإن HDC الخاص بها نعثر عليه بواسطة الدالة GetDC وتكون على الشكل التالي :

HDC hdc=GetDC(hwnd) نعطيها رقو النافدة hwnd وترجع لنا hdc الهاندل للرسم الدي نريده ومن هنا يمكن أن نرسم ما نشاع باستعمال hdc ولكن في الأخير وبعد الإنتهاء من الرسم يجب إزالة هدا.

وفي المثال السابق فقد أعطينا NULL في مكان hwnd وفي هده الحالة سنعتبر المكتب كله كالنافدة التي نريد أن نرسم فيها.

وعندنا مجموعة متعددة لدوال الرسم مثل LineTo كما في المثال وهناك أيضا :

Arc ArcTo PolyDraw PolyLine هده مثلا لرسم دائرة أو قطعة من الدائرة أو لرسم عدة خطوط وهناك دوال أخرى كثيرة لا يمكنني عرضها كلها وهي تمكننا من رسم كل ما نحتاجه .

هده نظرة إجمالية عن هدا وإدا كنت مهتم ببرمجة هدا على الوندوز فيجب أولا برمجة النافدة التي ستستقبل الرسم إدا كنا لا نريد الرسم على المكتب فقط. وإدا كنت تنوي هدا فبإمكاني مساعدتك وإعطاءك الأمثلة.

أما المكتبة التي دكرتها فهي تكون مبرمجة من فريق آخر إد هي لا توجد بين Standard وهنا يجب أن تكون عندك المكتبة وكيفية استعمالها .وللرسم في الدوس نعتمد كما قلت بالرسم مباشرة في داكرة الرسم وأن هده المكتبة في الغالب ما تقوم على هده التقنية وتعطي واجهة للمستعمل نوعا من واجهة الوندوز إلا أن استعمال الدوس قد بدأ في الإندثار وحتى أنا مند وقت لم أعد أهتم بهده النوع من برامج الدوس رغم أن الرسم على الدوس أسرع بكثير على الوندوز من ناحية الإنجاز .

أتمنى لك التوفيق وإلى اللقاء.

#6

السلام عليكم ورحمة الله وبركاته :

أخي الكرلايم سأجرب المثال الذي أعطيتني وأرد عليك بس أن شاء الله يمشي .

أما أخي chik بارك الله فيك مع أني أحس أن الموضوع صعب ولكن لاتهمني الصعوبة أبدا بأذن الله .

أريد أن أسألأك أخي الكريم فأنا لم أتعلم لغة c& c++ في الجامعة الا لبرمجة الوندوز ولو برنامج صغير فهذه طموحات واسعى لتحقيقها بأذن الله ولذلك أن شاء الله سأسعى لتعلم برمجة الوندوز فالقريب العاجل ولكن أحتاج مساعدتك ومشورتك .

1 من أين أبدأ ؟؟؟؟؟؟؟؟؟؟؟؟

2 هل توجد كتب عربية تشرح هذا المجال .

3 هل هنالك منتديات تساعد المبرمجين في طرق الشرح والمعالجة والتحليل وبرمجة الوندوز أو أي جزء من softwere .

بالتوفيق والى اللقاء .

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#7

السلام عليكم,

إدا كنت تعرف برمجة س أو س++ فبرمجة الوندوز لا تكلفك كثيرا على الأقل بعض البرامج الصغيرة والعادية يجب فقط معرفة بعض المبادء وإدا كنت تستعمل Visual C++ ف MFC تسهل دلك أكثر وهي قد تقوم بالأشياء الصعبة كهيكل الوندوز وغير دلك وأنت تزيد الأشياء الخاصة بك تقريبا كأنك تبرمج ب فيجوال باسيك.

اسمح لي لا أعرف كتبا عربية عن هدا الموضوع.

وقد قمت بإعطاء بعض الدروس ومبادء برمجة الوندوز بالمقارنة مع MFC و API في هدا المنتدى إلا أن عدو اهتمام الإخوة جعلني لا أنهي هدا ويمكنك مشاهدة هدا في هدا الرابط :

/index.php?showtopic=33248

وإدا كان لك أي استفسار أو أسئلة سأكون رهن الإشارة إن شاء الله.

هو فعلا تعلم س أو س++ شيء مهم وبرمجة الدوس كدلك لكن يجب أن ننظر ما هي الأفق لهده البرامج فهي نستعملها في البداية للتعلم لأنها تمكننا من معرفة برامج البرمجة بسهولة لكن بعد دلك أظن ان المبرمج لا بد وأن يسبح يوما ما في برامج الوندوز وهنا لا أقصد وندوز مايكروسوفت فقط بل كل الأنضمة التي تعتمد على النوافد.

تم تعديل هذه المشاركة بواسطة HGB في 29 أبريل 2004 في 04:02

هذا الموضوع مغلق.

مواضيع مشابهة