واجهة جهاز الرسومات

واجهة جهاز الرسومات في بنية نظام التشغيل ويندوز إن تي
على سبيل المثال ، يستخدم GDK واجهة برمجة تطبيقات GDI.

واجهة جهاز الرسومات ( GDI ) هي مكون قديم من نظام التشغيل مايكروسوفت ويندوز، مسؤول عن تمثيل الكائنات الرسومية ونقلها إلى أجهزة الإخراج مثل الشاشات والطابعات . وقد تم استبدالها بواجهة برمجة تطبيقات DirectDraw ، ثم لاحقًا بواجهة برمجة تطبيقات Direct2D . تستخدم تطبيقات ويندوز واجهة برمجة تطبيقات ويندوز للتفاعل مع GDI، لأداء مهام مثل رسم الخطوط والمنحنيات، وعرض الخطوط ، وإدارة لوحات الألوان . يستخدم نظام ويندوز الفرعي للمستخدم GDI لعرض عناصر واجهة المستخدم مثل إطارات النوافذ والقوائم. تحتوي أنظمة أخرى على مكونات مشابهة لـ GDI؛ على سبيل المثال: كان لدى نظام ماك أو إس QuickDraw ، بينما يحتوي نظاما لينكس ويونكس على بروتوكول X Window System الأساسي.

لعلّ أبرز مزايا واجهة برمجة تطبيقات الرسومات (GDI) مقارنةً بالطرق المباشرة للوصول إلى مكونات الجهاز هي قدرتها على التوسع وتمثيلها المجرد للأجهزة المستهدفة. فباستخدام GDI، يُمكن الرسم على أجهزة متعددة، مثل الشاشة والطابعة، مع ضمان عرض المحتوى بشكل صحيح في كل حالة. وتُعدّ هذه الميزة أساسية في معظم تطبيقات " ما تراه هو ما تحصل عليه " لأنظمة مايكروسوفت ويندوز.

قد تستخدم الألعاب البسيطة التي لا تتطلب معالجة رسومية سريعة واجهة GDI. مع ذلك، تُعدّ GDI صعبة الاستخدام نسبيًا في الرسوم المتحركة المتقدمة، وتفتقر إلى آلية للمزامنة مع إطارات الفيديو الفردية في بطاقة الفيديو ، كما تفتقر إلى تقنية التظليل النقطي للأجهزة في الرسومات ثلاثية الأبعاد. عادةً ما تستخدم الألعاب الحديثة Direct3D أو Vulkan أو OpenGL بدلاً من ذلك.

التفاصيل الفنية

في واجهة برمجة تطبيقات الرسومات (GDI)، يُحدد سياق الجهاز (DC) خصائص النصوص والصور لجهاز الإخراج، كالشاشة أو الطابعة. وتحتفظ GDI بالسياق الفعلي. ويتطلب إنشاء المخرجات الحصول على مؤشر لسياق الجهاز (HDC). وبعد إنشاء المخرجات، يمكن تحرير هذا المؤشر.

تستخدم GDI خوارزمية بريسنهام لرسم الخطوط لرسم الخطوط المستعارة. [ 1 ]

سجل الإصدارات

الإصدارات المبكرة

كانت واجهة برمجة تطبيقات الرسومات (GDI) موجودة في الإصدار الأولي من ويندوز. كانت برامج MS-DOS تتحكم في وحدة معالجة الرسومات باستخدام المقاطعات البرمجية (أحيانًا عبر BIOS الفيديو ) ومن خلال التحكم المباشر في ذاكرة الفيديو . يفترض الكود المكتوب بهذه الطريقة أنه المستخدم الوحيد لذاكرة الفيديو، وهو أمر غير عملي في بيئة متعددة المهام مثل ويندوز. ناقشت مجلة BYTE ، في ديسمبر 1983، خطط مايكروسوفت لنظام يُخرج الرسومات إلى كل من الطابعات والشاشات باستخدام نفس الكود في الإصدار الأول القادم من ويندوز. [ 2 ]

في نظامي التشغيل Windows 3.1x و Windows 9x ، يمكن لـ GDI استخدام ميزات نقل البتات لتسريع ثنائي الأبعاد، إذا تم تثبيت برنامج تشغيل بطاقة رسومات مناسب. [ 3 ]

منذ نظام التشغيل Windows NT 4.0 ، كان GDI الخاص بنظام التشغيل Windows NT يعمل في وضع النواة ؛ [ 4 ] ولكن منذ نظام التشغيل Windows Vista ، يعمل DWM في وضع المستخدم .

ويندوز إكس بي

مع إطلاق نظام التشغيل ويندوز إكس بي ، أصبحت GDI+ مكملةً لـ GDI. كُتبت GDI+ بلغة C++، وأضافت رسومات ثنائية الأبعاد مُنعّمة الحواف، وإحداثيات الفاصلة العائمة، وتظليل التدرج اللوني، وإدارة مسارات أكثر تعقيدًا، ودعمًا مُدمجًا لتنسيقات ملفات الرسومات الحديثة مثل JPEG و PNG ، ودعمًا لتركيب التحويلات الأفينية في مسار عرض ثنائي الأبعاد. تستخدم GDI+ قيم RGBA لتمثيل الألوان. يظهر استخدام هذه الميزات جليًا في مكونات ويندوز إكس بي، مثل برنامج الرسام من مايكروسوفت ، وعارض الصور والفاكس ، ومعالج طباعة الصور، وشاشة التوقف "عرض شرائح الصور". يُسهّل وجودها في طبقة الرسومات الأساسية بشكل كبير تنفيذ أنظمة الرسومات المتجهة مثل Adobe Flash أو SVG . بالإضافة إلى ذلك، يوفر إطار عمل .NET واجهة مُدارة لـ GDI+ عبر System.Drawingمساحة الاسم .

على الرغم من أن GDI+ مضمنة في نظام التشغيل Windows XP والإصدارات الأحدث، إلا أنه يمكن أيضًا شحن مكتبة GDI+ الديناميكية مع تطبيق واستخدامها على الإصدارات الأقدم من Windows. [ 5 ]

بسبب إمكانيات معالجة النصوص الإضافية واستقلالية الدقة في GDI+، يتولى المعالج المركزي عملية عرض النصوص. [ 6 ] والنتيجة هي أداء أبطأ بعشر مرات من GDI المُسرّع بواسطة الأجهزة . [ 7 ] نشر كريس جاكسون بعض الاختبارات التي تُشير إلى أن جزءًا من كود عرض النصوص الذي كتبه كان قادرًا على عرض 99000 رمز في الثانية باستخدام GDI، بينما عرض الكود نفسه باستخدام GDI+ 16600 رمز في الثانية.

GDI+ مشابه (في الغرض والبنية) لنظام QuickDraw GX الفرعي من Apple ، ومكتبات libart و cairo مفتوحة المصدر .

ويندوز فيستا

في نظام التشغيل ويندوز فيستا، تعمل جميع تطبيقات ويندوز، بما في ذلك تطبيقات GDI وGDI+، ضمن محرك التركيب الجديد، مدير نوافذ سطح المكتب (DWM)، الذي يدعم تسريع الأجهزة بواسطة وحدة معالجة الرسومات (GPU). ونتيجةً لذلك، لم يعد GDI نفسه مدعومًا بتسريع الأجهزة. [ 8 ] [ 9 ] [ 10 ] وبسبب طبيعة عمليات التركيب، يمكن أن تكون عمليات تحريك النوافذ أسرع وأكثر استجابةً لأن التطبيق لا يحتاج إلى إعادة عرض المحتوى الأساسي. [ 9 ]

ويندوز 7

يتضمن نظام التشغيل Windows 7 تسريعًا للأجهزة لتقنية GDI لعمليات نقل البيانات في نموذج برنامج تشغيل العرض Windows الإصدار 1.1 . يُحسّن هذا من أداء GDI ويسمح لـ DWM باستخدام ذاكرة الفيديو المحلية للتركيب، مما يقلل من استهلاك ذاكرة النظام ويزيد من أداء عمليات الرسومات. مع ذلك ، لا تزال معظم عمليات GDI الأساسية غير مُسرّعة بواسطة الأجهزة، على عكس Direct2D . ويستمر GDI+ في الاعتماد على العرض البرمجي في Windows 7. [ 11 ]

طابعات GDI

طابعة GDI أو Winprinter (المشابهة لـ Winmodem ) هي طابعة مصممة لاستقبال المخرجات من جهاز كمبيوتر يعمل بنظام Windows، والذي يتولى جميع عمليات الطباعة: تقوم GDI بتحويل الصفحة إلى صورة نقطية، يستقبلها برنامج تشغيل الطابعة في الكمبيوتر ، ويعالجها، ثم يرسلها إلى الطابعة المرتبطة بها. [ 12 ] [ 13 ] الاتصال بين GDI وبرنامج التشغيل في الكمبيوتر، والطابعة، ثنائي الاتجاه؛ حيث تُبلغ الطابعة الكمبيوتر ما إذا كانت جاهزة للطباعة أو غير متصلة، أو نفد منها الورق، وما إلى ذلك.

يمكن للطابعة المزودة بلغة تحكم خاصة بها استقبال المدخلات من أي جهاز مزود ببرنامج تشغيل مناسب، دون الحاجة إلى جهاز كمبيوتر يعمل بنظام ويندوز. تتطلب هذه الطابعة مكونات مادية وبرمجيات ثابتة وذاكرة لمعالجة الصفحات التي يقوم بها عادةً نظام GDI الخاص بجهاز الكمبيوتر المضيف الذي يعمل بنظام ويندوز. يمكن إتاحة طابعات GDI لأجهزة الكمبيوتر على الشبكة إذا تم توصيلها كطابعات مشتركة على جهاز كمبيوتر يعمل بنظام ويندوز. pnm2ppaتم تطوير بعض برامج تشغيل GDI "العامة"؛ وتهدف هذه البرامج إلى جعل طابعات GDI متوافقة مع أنظمة تشغيل أخرى غير ويندوز مثل FreeBSD ، ولكنها لا تدعم جميع الطابعات. [ 12 ]

لتسهيل عملية إنشاء برامج تشغيل طابعات ويندوز، طورت مايكروسوفت برنامج تشغيل الطابعة العالمي . يتيح هذا البرنامج لمصنعي الطابعات كتابة "برامج تشغيل مصغرة" لوصف الطابعة العامة (GPD)، والتي تصف إمكانيات الطابعة ومجموعة الأوامر الخاصة بها بنص عادي دون الحاجة إلى برمجة وضع النواة.

تخلت مايكروسوفت عن نموذج الطباعة GDI مع مواصفات الورق المفتوحة XML .

القيود

تستهلك كل نافذة كائنات GDI. ومع ازدياد تعقيد النافذة، بإضافة ميزات مثل الأزرار والصور، يزداد استهلاكها لكائنات GDI. وعندما يتجاوز عدد الكائنات المستخدمة الحد المسموح به، يعجز نظام ويندوز عن رسم المزيد منها، مما يؤدي إلى خلل في أداء البرامج وتجمدها وعدم استجابتها. [ 14 ] كما أن العديد من التطبيقات مُبرمجة بشكل خاطئ ولا تُحرر كائنات GDI بعد استخدامها، مما يزيد المشكلة تعقيدًا. [ 15 ] يختلف إجمالي كائنات GDI المتاحة من إصدار ويندوز لآخر: كان الحد الأقصى في ويندوز 9x هو 1200 كائن؛ وفي ويندوز 2000 هو 16384 كائنًا؛ أما في ويندوز XP والإصدارات الأحدث، فيمكن ضبط الحد الأقصى (عبر سجل النظام) بحيث يكون افتراضيًا 10000 كائن لكل عملية (ولكن الحد الأقصى النظري هو 65536 كائنًا للجلسة بأكملها). [ 16 ] [ 17 ] أما في ويندوز 8 والإصدارات الأحدث، فيرتفع الحد الأقصى لكائنات GDI إلى 65536 كائنًا لكل جلسة تسجيل دخول مستخدم.

تضمنت الإصدارات السابقة من نظام التشغيل ويندوز، مثل ويندوز 3.1 وويندوز 98، برنامجًا يُسمى "مقياس الموارد" يسمح للمستخدم بمراقبة مقدار موارد واجهة برمجة تطبيقات الرسومات (GDI) المُستخدمة من إجمالي موارد النظام. وكان هذا المقياس يستهلك كائنات GDI بنفسه. أما الإصدارات اللاحقة، مثل ويندوز 2000 وويندوز XP، فتُتيح عرض استخدام كائنات GDI لكل برنامج في "إدارة المهام"، ولكنها لا تُظهر للمستخدم إجمالي سعة GDI المُتاحة.

قد يؤثر تجاوز سعة واجهة برمجة تطبيقات الرسومات (GDI) على نظام التشغيل ويندوز نفسه، مما يمنع فتح نوافذ جديدة، وعرض القوائم، وظهور مربعات التنبيه. قد يصعب حل هذه المشكلة، وقد تتطلب إعادة تشغيل النظام قسرًا، لأنها تعيق عمل برامج النظام الأساسية. في ويندوز 8 و8.1، يتم تسجيل الخروج قسرًا نتيجةً لتجاوز سعة واجهة برمجة تطبيقات الرسومات، بدلًا من إعادة التشغيل.

خليفة

يُعدّ Direct2D خليفةً لـ GDI و GDI+. أما DirectWrite ، فهو بديلٌ لـ Uniscribe . وقد تمّ تضمينهما مع نظامي التشغيل Windows 7 و Windows Server 2008 R2، وكانا متاحين لنظامي التشغيل Windows Vista و Windows Server 2008 (مع تثبيت تحديث النظام الأساسي). لاحقًا، طوّرت مايكروسوفت Win2D ، وهي مكتبة فئات مجانية ومفتوحة المصدر تُشبه GDI. تستهدف Win2D المطورين الذين يستخدمون لغات C++ و C# و Visual Basic.NET لتطوير تطبيقات منصة Windows العالمية . [ 18 ]

انظر أيضاً

ملاحظات ومراجع

  1. ستيفن وايت؛ ديفيد كولتر؛ مايك جاكوبس (31 مايو 2018). "مقارنة تسريع الأجهزة باستخدام Direct2D وGDI" . مطور ويندوز . مايكروسوفت .
  2. بتلر، جون (ديسمبر 1983). "إخراج رسومات مستقل عن الجهاز لنظام التشغيل مايكروسوفت ويندوز" . بايت . ص 49. تم الاطلاع عليه في 20 أكتوبر 2013 . 
  3. "كتاب تطبيقات وتصويبات CL-GD543X - المراجعة 1.2" (ملف PDF) . سيروس لوجيك . أبريل 1994. تم الاطلاع عليه في 4 يناير 2025 .
  4. "هجمات النواة من خلال ردود الاتصال في وضع المستخدم" (ملف PDF) . مؤرشف من الأصل (ملف PDF) بتاريخ 19-01-2012.
  5. حزمة تطوير البرامج (SDK) القابلة لإعادة التوزيع: GDI+
  6. "واجهات برمجة تطبيقات الرسم ثنائي الأبعاد في ويندوز -" مدونة مطوري DirectX . مدونات MSDN. 12 مايو 2009. تم الاطلاع عليه في 19 يوليو 2012 .
  7. جاكسون، كريس. "مقارنة أداء عرض النصوص باستخدام GDI مقابل GDI+" . التوافق الدلالي لكريس جاكسون . مايكروسوفت.
  8. MSDN: مقارنة تسريع الأجهزة باستخدام Direct2D و GDI
  9. 1 2 لا يتم تسريع GDI بواسطة الأجهزة في نظام التشغيل Windows Vista
  10. النوافذ المتراكبة... أحيانًا يكون البرنامج أسرع من الجهاز . Avalite على مدونات MSDN.
  11. توماس أولسن (29 أكتوبر 2008). "تقديم واجهة برمجة تطبيقات Microsoft Direct2D" .
  12. 1 2 "طابعة GDI عامة" . الطباعة المفتوحة . مؤسسة لينكس . تم الاطلاع عليه بتاريخ 21 يوليو 2021 .
  13. "طابعات تعمل بنظام ويندوز فقط" . مشروع توثيق لينكس . تم الاطلاع عليه بتاريخ 29 أكتوبر 2019 .
  14. مقالة قاعدة معارف مايكروسوفت رقم 838283 - يتم عرض قوائم تطبيقات سطح المكتب بشكل غير صحيح إذا تجاوزت عملية ما حصة كائنات GDI الخاصة بها في نظامي التشغيل Windows XP أو Windows 2000 http://support.microsoft.com/kb/838283
  15. مدونة شبكة مطوري مايكروسوفت - تسريب GDI في Outlook 2007 يُسبب مشاكل عند وصول استخدام GDI إلى 10000 عنصر https://blogs.msdn.com/rgregg/archive/2007/09/03/outlook-2007-gdi-leak-hotfix.aspx
  16. شبكة مطوري مايكروسوفت - حدود كائنات GDI https://msdn.microsoft.com/en-us/library/ms724291(VS.85).aspx
  17. مقالة قاعدة معارف مايكروسوفت رقم 894500 - قد لا تعمل برامج .NET المصممة لأنظمة تشغيل NT الأحدث بشكل صحيح على أنظمة التشغيل القديمة Win 95 / Win 98 / Win ME بسبب انخفاض حدود استخدام GDI http://support.microsoft.com/kb/894500
  18. "Win2D" . microsoft/Win2D repo . Microsoft . تم الاسترجاع في 21 يوليو 2021 عبر GitHub.com .