1. المقدمة:
طريقة رسم الخطوط في دلفي هي في الأساس نفس طريقة رسم النقاط. يكمن الاختلاف في معلمات glBegin(). يمكن أن يشير رمز إطار الرسم إلى الكود الموجود في تهيئة رسم OpenGL2d ضمن دلفي، والعنوان هو //www.VeVB.COm/article/52141.htm. الجزء المعدل هو محتوى وظيفة الرسم.
2. خطوات رسم الخط:
GL_LINES: تعامل مع كل قمة على أنها قطعة خطية مستقلة يتم تحديد إجمالي عدد مقاطع الخط فيها بين الرؤوس 2n-1 و2n، ويتم رسم إجمالي عدد مقاطع الخط N/2.
GL_LINE_STRIP: ارسم مجموعة من المقاطع الخطية المتصلة بالتسلسل من الرأس الأول إلى الرأس الأخير. تحدد الرؤوس n وn+1 القطعة المستقيمة n التي يتم رسمها.
GL_LINE_LOOP: ارسم مجموعة من المقاطع الخطية المتصلة بالتسلسل من الرأس الأول إلى الرأس الأخير، ثم قم بتوصيل الرأس الأخير بالرأس الأول. يحدد الرأسان n وn+1 مقطع الخط n، وإجمالي الخط n يتم رسم القطاعات.
يمكن استخدام الوظائف التالية لرسم الخطوط:
يقوم glLineWidth() بتعيين عرض الخط
يقوم glShadeModel() بتعيين وضع انتقال اللون
يقوم الدالة glColor3f() بتعيين لون الخط
الإجراء TForm1.Draw؛يبدأ
// امسح المخزن المؤقت
glClear(GL_COLOR_BUFFER_BIT أو GL_DEPTH_BUFFER_BIT);
// ----------- GL_LINES -----------
//ضبط عرض الخط
glLineWidth(5);
// لون متدرج بين نقطتين
glShadeModel(GL_SMOOTH);
glBegin(GL_LINES); // رسم الخطوط
// اضبط لون خط البداية
glColor3f(1, 0, 0);
// رسم نقطة البداية
glVertex2f(50, 50);
// اضبط لون خط نقطة النهاية
glColor3f(0, 0, 1);
// نقطة نهاية اللوحة
glVertex2f(200, 200);
glEnd;
// نفس اللون بين نقطتين
glShadeModel(GL_FLAT);
glBegin(GL_LINES);
glColor3f(0, 1, 0);
glVertex2f(200, 50);
glColor3f(1, 1, 0);
glVertex2f(50, 200);
glEnd;
// ----------- GL_LINE_LOOP -----------
// إغلاق الحلقة بثلاث نقاط لتكوين مثلث glShadeModel(GL_SMOOTH);
glLineWidth(1);
glBegin(GL_LINE_LOOP);
glColor3f(0, 0, 1);
glVertex2f(250, 50);
glVertex2f(250, 200);
glVertex2f(280, 150);
glEnd;
// ----------- GL_LINE_STRIP -----------
// متعدد النقاط glShadeModel(GL_SMOOTH);
glLineWidth(1);
glBegin(GL_LINE_STRIP);
glColor3f(1, 0, 255);
glVertex2f(350, 50);
glVertex2f(400, 200);
glVertex2f(480, 150);
glVertex2f(490, 60);
glEnd;
SwapBuffers(FDC); // قم بتبديل محتويات المخزن المؤقت المزدوج، الذي سينسخ الرسومات المرسومة للتو على الشاشة.
نهاية؛
يمكنك رؤية التدرج اللوني للسطر X الأول الذي يحتوي على هذا النمط بشكل افتراضي. يوفر OpenGL وظيفة glShadeModel لتحديد كيفية التعامل مع حالة الألوان المختلفة هذه.
glShadeModel(GL_SMOOTH); // الوضع السلس، وهو أيضًا طريقة المعالجة الافتراضية لـ opengl، يحقق تأثير التدرج اللوني glShadeModel(GL_FLAT); // الوضع أحادي اللون، يعتمد لون مقطع الخط على لون معين قمة الرأس، والتي يتم تحديدها من خلال التنفيذ المحدد. لتجنب عدم اليقين، حاول استخدام نفس اللون عبر المضلعات
بعد الاختبار، وجد أن تأثير التدرج غير صالح ضمن أنماط GL_LINE_LOOP وGL_LINE_STRIP! ويجب التأكد من الأسباب المحددة.
بالإضافة إلى ذلك، يوفر برنامج OpenGL وظيفة منع التعرج، وهي وظيفة
glEnable(GL_LINE_SMOOTH); //تمكين glHint(GL_LINE_SMOOTH,GL_NICEST);
بعد استخدامه، وجدت أن تأثير منع التعرج لم يكن واضحًا. ويبقى لمزيد من الدراسة.
انقر هنا لتحميل الكود الكامل