جافا ثنائية الأبعاد

Java 2D هي واجهة برمجة تطبيقات (API) لرسم الرسومات ثنائية الأبعاد باستخدام لغة برمجة Java . [ 1 ] يمكن اعتبار كل عملية رسم في Java 2D بمثابة تعبئة شكل باستخدام أداة تلوين ودمج النتيجة على الشاشة . Java 2D عبارة عن مجموعة من الفئات للرسومات والتصوير ثنائي الأبعاد المتقدم. وهي تشمل الرسومات الخطية والنصوص والصور في نموذج واحد شامل. توفر واجهة برمجة التطبيقات دعمًا واسعًا لدمج الصور وصور قناة ألفا، ومجموعة من الفئات لتوفير تعريف دقيق لمساحة اللون وتحويلها، ومجموعة غنية من عوامل تشغيل التصوير الموجهة للعرض.

منظمة

تتوفر واجهة برمجة تطبيقات Java 2D ووثائقها للتنزيل كجزء من JDK 6. يتم تنظيم فئات واجهة برمجة تطبيقات Java 2D في الحزم التالية في JDK 6:

  • java.awtالحزمة الرئيسية لمجموعة أدوات Java Abstract Window Toolkit .
  • java.awt.geomمكتبة جافا القياسية للأشكال الهندسية ثنائية الأبعاد مثل الخطوط والقطع الناقصة والأشكال الرباعية.
  • java.awt.fontمكتبة لمعالجة الرموز الرسومية في جافا.
  • java.awt.colorالمكتبة التي تتناول الطرق العديدة والمختلفة التي يمكن من خلالها تمثيل اللون.
  • java.awt.imageمكتبة لمعالجة الصور الرسومية.
  • java.awt.printمكتبة أدوات الكتابة على الورق.

المفاهيم الأساسية

تُعد هذه الكائنات جزءًا ضروريًا من كل عملية رسم ثنائية الأبعاد في جافا.

الأشكال

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

محاولة ملء قطعة مستقيمة لن تؤثر على أي بكسلات، لأن هذا الشكل لا يحتوي على أي بكسلات في حد ذاته. بدلاً من ذلك، يجب استخدام مستطيل رفيع بحيث يحتوي الشكل على بعض البكسلات.

الدهانات

تُحدد أداة التلوين الألوان المستخدمة لكل بكسل في عملية التعبئة. أبسط أداة تلوين هي java.awt.Colorالتي تُنتج نفس اللون لجميع البكسلات. أما أدوات التلوين الأكثر تعقيدًا فقد تُنتج تدرجات لونية، أو صورًا ، أو أي مزيج من الألوان. تعبئة شكل دائري باللون الأصفر ينتج عنها دائرة صفراء كاملة، بينما تعبئة نفس الشكل الدائري باستخدام أداة تلوين تُنتج صورة ينتج عنها جزء دائري مقصوص من الصورة.

المواد المركبة

أثناء أي عملية رسم، يوجد مصدر (وحدات البكسل التي ينتجها برنامج الرسم) ووجهة ( وحدات البكسل الموجودة بالفعل على الشاشة). عادةً، تحل وحدات البكسل المصدر محل وحدات البكسل الوجهة، ولكن خاصية التركيب تسمح بتغيير هذا السلوك.

تُنتج عملية التركيب، التي تعتمد على وحدات البكسل المصدر والوجهة، النتيجة النهائية التي تظهر على الشاشة. أكثر أنواع التركيب شيوعًا هو التركيب java.awt.AlphaCompositeالشفاف جزئيًا، والذي يسمح برؤية وحدات البكسل المرسومة بشكل جزئي، بحيث تظهر وحدات البكسل الوجهة من خلاله بدرجة ما.

تعبئة

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

ثم يُطلب من برنامج الرسم توليد لون لكل بكسل من البكسلات المراد تلوينها. في الحالة الشائعة للتعبئة بلون واحد، سيتم تعيين نفس اللون لكل بكسل.

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

الكائنات المتقدمة

يمكن النظر إلى هذه الأشياء على أنها تؤدي واجباتها من حيث الأشياء الأبسط الموصوفة أعلاه.

تحويل

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

يمكن اعتبار عملية التعبئة باستخدام التحويل بمثابة إنشاء شكل جديد تم تحويله ثم تعبئة هذا الشكل.

سكتة دماغية

بالإضافة إلى عملية التعبئة ، توفر Java 2D عملية الرسم . فبينما ترسم التعبئة الجزء الداخلي للشكل، ترسم عملية الرسم محيطه الخارجي. ويمكن أن يكون المحيط الخارجي بسيطًا كخط رفيع، أو معقدًا كخط متقطع ذي حواف مستديرة.

العنصر المسؤول عن إنشاء المخطط هو الخط . عند إدخال شكل معين، يُنتج الخط شكلاً جديداً يُمثل مخططه. على سبيل المثال، يمكن تحويل قطعة مستقيمة رفيعة للغاية (بدون باطن) إلى مستطيل بعرض بكسل واحد.

وبالتالي، يمكن وصف عملية الرسم بأنها إنشاء كائن جديد ذي خطوط ثم ملء هذا الكائن.

من الناحية التقنية، لا يتطلب الأمر من دالة الرسم سوى قبول شكل مُدخل وإنتاج شكل جديد. تُطبّق دالة الرسم المُرفقة مع Java 2D قواعد الخطوط الخارجية المذكورة أعلاه، ولكن يمكن لدالة رسم مُخصصة أن تُنتج أي شكل تريده.

التحسينات

من الناحية المفاهيمية، يمكن اعتبار رسم خط أسود مستقيم في Java 2D بمثابة إنشاء قطعة مستقيمة، وتحويلها وفقًا للتحويل الحالي، ورسمها لإنشاء مستطيل رفيع، والاستعلام عن هذا الشكل لحساب وحدات البكسل المتأثرة، وإنشاء وحدات البكسل باستخدام java.awt.Color.BLACK، ثم تجميع النتائج على الشاشة.

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

تقوم Java 2D بالحد الأدنى من العمل اللازم لجعل الأمر يبدو كما لو أنها تقوم بكل هذه الخطوات لكل عملية، وبالتالي الحفاظ على كل من المرونة الكبيرة والأداء العالي.

وجهة

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

التوافق بين Java2D و OpenGL

منذ Java SE 6 ، أصبح Java2D و OpenGL قابلين للتشغيل البيني، مما يسمح، على سبيل المثال، برسم رسومات ثلاثية الأبعاد متحركة بدلاً من الرموز على زر (انظر JOGL ).

انظر أيضاً

مراجع

https://docs.oracle.com/javase/8/docs/technotes/guides/2d/