Transparente Ecken im Rahmen mit abgerundeten Ecken
Im angegebenen Code zeichnet die TextBubbleBorder-Klasse ein abgerundetes Rechteck mit einem dreieckigen Zeiger am unteren Rand . Allerdings werden die Ecken außerhalb des Rechtecks etwas erweitert 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.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3