لمحة جافاوية 40: حل مشكلة رسم الأشكال الدائرية

السلام عليكم

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

الدروس المستفادة من معركة الكواسر
1- الأيام يوماً لك ويوم عليك
2- في السياسة إياك أن تسلم رقبتك لأحد حتى ولو كان أخوك
3- لا يوجد الأخ 3
4- مادام أن الأخ 3 غير موجود فـالأخ 4 غير موجود
5- لكي يزيد عدد الدروس المستفادة
بعد أن حكيت لكم الدروس المستفادة
أظن أنكم مشتاقون إلى لمحاتي العبقرية
أرحمنا يا أخي اعتقنا لوجه الله
(هذه أماني الدبة)
يبدو أن هناك مؤيدين للحكومة المخلوعة
وأنا أحذرهم من عاقبة هذا التأييد
سأعتبر نفسي لم أسمع الكلام هذه المرة
لكن لا أضمن ما الذي سيحدث في المرة القادمة
على العموم سأدخل في اللحمة مباشرة
اليوم أريد أن أحدثكم عن مشكلة واجهتني لمدة طويلة
هذه المشكلة تكمن في عملية الرسم في الجافا
بالأخص رسم الدوائر والقطاعات الدائرية
المشكلة واجهتني في حزمة بياني AChart
وتتلخص في أن الأشكال الدائرية عندما ترسم في جافا
لا تكون ناعمة وتحتوي على تعرجات بسيطة aliasing
لاحظوا معي الصورة التالية

لحل هذه المشكلة أسلوب يسمى ضد التعرج Antialiasing
وهذا يأخذ وقت إضافي في عملية الرسم
لهذا نلاحظ أن جافا لم تجعله أساسياً وإنما اختيارياً لمن أراد الدقة
لحل هذه المشكلة نستخدام الخاصية setRenderingHints الموجودة في الفئة Graphics2D

g2d.setRenderingHints( renderingHintsObject());

الدالة renderingHintsObject ترجع كائن من الفئة RenderingHints

	private RenderingHints renderingHintsObject(){
		 
		// antialiasing on
		RenderingHints renderHints =
		new RenderingHints(RenderingHints.KEY_ANTIALIASING,
		RenderingHints.VALUE_ANTIALIAS_ON);
		renderHints.put(RenderingHints.KEY_RENDERING,
		RenderingHints.VALUE_RENDER_QUALITY);
		return renderHints;
		// end of antialiasing 
	}

لمعلومات أكثر عن هذه الدالة ومحتوياتها راجعوا المراجع
وهذه الصورة بعد تطبيق الخطوات السابقة

ملاحظة: هناك أنظمة لا تدعم أسلوب ضد التعرج Antialiasing
لذلك فجافا تأخذ في اعتبارها هذه النظم
وتتجاهل كل ما قمنا به في هذه التلميحة

قبل أن أختم الموضوع أريد أن أقدم
شكر خاص للأخ عمر عادل من منتدى الفريق العربي قسم c++ على المساعدة التي قدمها لي في هذا الموضوع

http://www.arabteam2000-forum.com/index.php?showtopic=173820&view=findpost&p=880163

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

مراجع:
1- الفصل الخاص بعملية Rendering في كتاب Programmer’s Guide to the JavaTM 2D API الدرس Controlling Rendering Quality

http://java.sun.com/j2se/1.5.0/docs/guide/2d/spec/j2d-awt.html

تحياتي

Tags: , , , , , , , , , , ,

4 Responses to “لمحة جافاوية 40: حل مشكلة رسم الأشكال الدائرية”

  1. أميره قال:

    كلامكـ صعب علي !!!

  2. admin قال:

    أي منطقة بالضبط يا أميرة
    أعذريني كان لدي مشكلة مع الإنترنت
    لهذا تأخرت في الإجابة

    تحياتي

  3. سطام قال:

    حلووووووووووووووووووووووو بس أنا أبغى تفسيرها

  4. admin قال:

    السلام عليكم

    أخ سطام الموضوع يتلخص في التالي لكي تفوم برسم الصورة بهذا الوضوح فأنك تستهلك المعالج في عمليات رياضية والتي ستعطيك هذه الدقة
    كما أنها ستأخذ الكثير من المساحة للبناء
    لهذا فهناك البعض يفضل الحصول على صورة فيها تعرجات على أن يكون برنامجه أبطأ
    آخرون يريدون أن يحصلوا على الدقة بغض النظر عن المترتبات على الموضوع
    عليك أن تختار أحد الطريقين trade off

    بالمناسبة أخي ما معنى سطام؟
    الاسم غريب نوعاً ما لذا أسألك

    تحياتي

Leave a Reply