Heim  >  Artikel  >  Java  >  Wie erreicht man mit einem dreieckigen Zeiger transparente Ecken in einem abgerundeten Rechteck?

Wie erreicht man mit einem dreieckigen Zeiger transparente Ecken in einem abgerundeten Rechteck?

Barbara Streisand
Barbara StreisandOriginal
2024-11-07 22:11:02706Durchsuche

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

Transparente Ecken im Rahmen mit abgerundeten Ecken

Im angegebenen Code zeichnet die TextBubbleBorder-Klasse ein abgerundetes Rechteck mit einem dreieckigen Zeiger am unteren Rand . Die Ecken außerhalb des Rechtecks ​​​​dehnen sich jedoch etwas aus und zeigen die Hintergrundfarbe des übergeordneten Bedienfelds. Um transparente Ecken zu erreichen, ändern wir die Methode paintBorder um einen zusätzlichen Schritt:

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

Dieser Code prüft, ob die Komponente ein übergeordnetes Element hat, ruft ihre Hintergrundfarbe ab und erstellt ein Rechteck, das den gesamten Randbereich darstellt. Anschließend wird ein Area-Objekt „borderRegion“ erstellt, das dieses Rechteck darstellt. Als nächstes subtrahiert es den Bereich, der die Textblase darstellt, von der borderRegion und erstellt einen Bereich namens „clip“, der den Bereich außerhalb der Textblase darstellt.

Mit „clip“ legt der Code den Beschneidungsbereich für das Graphics2D-Objekt fest und füllt ihn mit der Hintergrundfarbe des übergeordneten Elements und setzt dann den Ausschneidebereich zurück, um den Rahmen selbst zu zeichnen. Dadurch wird sichergestellt, dass die Ecken außerhalb des abgerundeten Rechtecks ​​transparent werden und die Hintergrundfarbe des übergeordneten Rechtecks ​​anzeigen.

Das obige ist der detaillierte Inhalt vonWie erreicht man mit einem dreieckigen Zeiger transparente Ecken in einem abgerundeten Rechteck?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn