"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية إنشاء حدود مستديرة مع الشفافية في جافا؟

كيفية إنشاء حدود مستديرة مع الشفافية في جافا؟

تم النشر بتاريخ 2024-11-25
تصفح:212

How to Create a Rounded Border with Transparency in Java?

الحدود ذات الزوايا الدائرية والشفافية

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

الحل:

التعديل الذي تم إجراؤه على فئة TextBubbleBorder هو كما يلي يتبع:

// قم برسم لون BG للأصل، في كل مكان خارج المقطع // من فقاعة النص. المكون الأصلي = c.getParent(); إذا (الأصل!=فارغة) { اللون bg =parent.getBackground(); Rectangle rect = new Rectangle(0,0,width, height); منطقة borderRegion = منطقة جديدة (rect)؛ borderRegion.subtract(area); g2.setClip(borderRegion); g2.setColor(bg); g2.fillRect(0, 0, width, height); g2.setClip(null);
// Paint the BG color of the parent, everywhere outside the clip
// of the text bubble.
Component parent  = c.getParent();
if (parent!=null) {
    Color bg = parent.getBackground();
    Rectangle rect = new Rectangle(0,0,width, height);
    Area borderRegion = new Area(rect);
    borderRegion.subtract(area);
    g2.setClip(borderRegion);
    g2.setColor(bg);
    g2.fillRect(0, 0, width, height);
    g2.setClip(null);
}
يقوم هذا الكود باسترداد المكون الأصلي ولون خلفيته. ثم يقوم بإنشاء منطقة تمثل المنطقة الحدودية ويطرح منها مناطق الفقاعة والمؤشر. هذا يحدد المنطقة خارج الحدود.

مع مجموعة منطقة المقطع، يملأ الكود المنطقة بلون خلفية المكون الأصلي، مما يجعل الحدود شفافة خارج الزوايا الدائرية.

اعتبارات إضافية:

    يوجد خطأ في الكود الأصلي، مما يتسبب في مشكلة القطع. تم إصلاح هذا الخلل في "إصلاح خطأ القطع" لطريقة PaintComponent().
  • من خلال ضبط حجم المؤشر على 0، يتحول الحد إلى مستطيل مستدير الزوايا قياسي.
  • معلمة تم تقديم left في مُنشئ TextBubbleBorder لإنشاء فقاعات بمحاذاة اليمين إذا تم ضبطها على false.
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3