Rumah >Java >javaTutorial >Bagaimana untuk Mencapai Sudut Lutsinar dalam Sempadan Segi Empat Bulat?

Bagaimana untuk Mencapai Sudut Lutsinar dalam Sempadan Segi Empat Bulat?

Patricia Arquette
Patricia Arquetteasal
2024-11-07 14:35:03262semak imbas

How to Achieve Transparent Corners in a Rounded Rectangle Border?

Sempadan dengan Sudut Bulat & Ketelusan: Menghapuskan Sudut Latar Belakang

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:

  1. Mengenal pasti kawasan di luar sempadan (menggunakan Kawasan).
  2. Mencipta laluan keratan yang mengecualikan rantau ini.
  3. Menetapkan klip konteks grafik ke laluan keratan.
  4. Melukis latar belakang induk.
  5. Memulihkan klip asal.

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!

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