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!