Pernyataan Masalah:
Pertanyaan berkisar pada TextBubbleBorder, a sempadan tersuai direka untuk kawasan teks. Walau bagaimanapun, apabila jidar digunakan untuk mencipta segi empat tepat bulat (dengan menetapkan saiz penuding kepada sifar), sudut di luar segi empat tepat kekal legap, memaparkan warna panel lalai dan bukannya ketelusan yang diingini.
Gambaran Keseluruhan Penyelesaian:
Kunci untuk mencapai ketelusan di sudut sempadan terletak pada mengecat warna latar belakang komponen induk di atas kawasan di luar segi empat tepat bulat. Ini melibatkan:
Kod Diubah Suai:
Kaedah paintBorder yang diubah suai berikut dalam kelas TextBubbleBorder menggabungkan langkah-langkah di atas:
@Override public void paintBorder( Component c, Graphics g, int x, int y, int width, int height) { Graphics2D g2 = (Graphics2D) g; // ... (unchanged code) // 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); } // ... (unchanged code) }
Keputusan:
Pengubahsuaian ini menarik latar belakang induk di kawasan di luar sudut bulat, menghasilkan sempadan lutsinar yang dikehendaki. Anda kini boleh membuat segi empat tepat bulat dengan jidar lutsinar yang disepadukan dengan lancar dengan komponen induknya.
Atas ialah kandungan terperinci Bagaimana untuk Mencapai Sudut Lutsinar dalam Sempadan Segi Empat Bulat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!