لماذا لا تحترم طريقة الرسم الخاصة بالرسومات سمات الحد؟
سؤال
أرغب في إنشاء حد مخصص بزوايا مستديرة.
الشفرة -
Genacodicetagpreالنتيجة -
كما ترى ، يتجاهل رمز الترقيم العام تمامًا سمات رمز الترقيم العام ورمز الترقيم العام.لماذا؟
المحلول
كما هو موضح في تعلم Java 2D ، الجزء 1 :
رمز ترميز عام: هذا يجعل غطاءًا دائريًا يتمركز في نقطة النهاية ، بقطر عرض القلم.
الكلمة الأساسية هي "توسيط". أعتقد أنه دائمًا عند الرسم بضربات سميكة ، فإن Java2D ستركز سماكة الخط على طول الخط الافتراضي الرقيق للغاية بين مراكز البكسل في إحداثيات البداية والنهاية. على سبيل المثال ، عند رسم خط أزرق عمودي بسمك 7 بكسل ، يرسم Java2D 3 بكسل على كل جانب من جوانب مقطع الخط الافتراضي الذي يتم رسمه.
في مثالك ، السُمك 5 بكسل. تحتاج إلى موازنة الإحداثيات لرسم الحد بالكامل داخل مقطع الرسومات. بالتحرك بمقدار 2 بكسل (أو رمز العلامة العامة) ، تصبح الزوايا الدائرية مرئية:
Genacodicetagpre
نصائح أخرى
المشكلة هي الإزاحة: أنت تقطع الحد في المنتصف فعليًا حتى تظهر الزوايا غير دائرية.مع الأخذ في الاعتبار (هنا فقط للإزاحة ، تحتاج إلى ضبط العرض أيضًا) Genacodicetagpre
تعديل
عد وحدات البكسل غير الصحيحة الثابتة :-)