Rumah >Java >javaTutorial >Bagaimana untuk Mencapai Sudut Lutsinar dalam Segiempat Bulat dengan Penunjuk Segi Tiga?

Bagaimana untuk Mencapai Sudut Lutsinar dalam Segiempat Bulat dengan Penunjuk Segi Tiga?

Barbara Streisand
Barbara Streisandasal
2024-11-07 22:11:02781semak imbas

How to Achieve Transparent Corners in a Rounded Rectangle with a Triangular Pointer?

Sudut Lutsinar dalam Sempadan dengan Sudut Bulat

Dalam kod yang diberikan, kelas TextBubbleBorder melukis segi empat tepat bulat dengan penuding segi tiga di bahagian bawah . Walau bagaimanapun, sudut di luar segi empat tepat memanjang sedikit, menunjukkan warna latar belakang panel induk. Untuk mencapai sudut lutsinar, kami mengubah suai kaedah paintBorder untuk memasukkan langkah tambahan:

// 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);
}

Kod ini menyemak sama ada komponen mempunyai induk, mendapatkan semula warna latar belakangnya dan mencipta segi empat tepat yang mewakili seluruh kawasan sempadan. Ia kemudian mencipta Kawasan sempadan objekRegion yang mewakili segi empat tepat ini. Seterusnya, ia menolak kawasan yang mewakili gelembung teks daripada borderRegion, mencipta Kawasan yang dipanggil klip yang mewakili kawasan di luar gelembung teks.

Dengan klip, kod menetapkan kawasan keratan untuk objek Graphics2D, mengisinya dengan warna latar belakang ibu bapa, dan kemudian menetapkan semula kawasan keratan untuk melukis sempadan itu sendiri. Ini memastikan bahawa sudut di luar segi empat tepat bulat menjadi lutsinar, menunjukkan warna latar belakang ibu bapa.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Sudut Lutsinar dalam Segiempat Bulat dengan Penunjuk Segi Tiga?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn