Rand mit abgerundeten Ecken und Transparenz
Diese Frage befasst sich mit dem Problem der Erstellung eines abgerundeten Randes mit Transparenz, damit die darunter liegende Komponente durchscheinen kann . Die Lösung besteht darin, die TextBubbleBorder-Klasse zu ändern, um die Hintergrundfarbe des übergeordneten Elements außerhalb des Clipbereichs des Rahmens zu zeichnen.
Lösung:
Die an der TextBubbleBorder-Klasse vorgenommene Änderung ist wie folgt folgt:
// 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 ruft die übergeordnete Komponente und ihre Hintergrundfarbe ab. Anschließend wird ein Bereich erstellt, der den Randbereich darstellt, und die Blasen- und Zeigerbereiche werden davon abgezogen. Dies definiert den Bereich außerhalb des Rahmens.
Wenn der Clip-Bereich festgelegt ist, füllt der Code den Bereich mit der Hintergrundfarbe der übergeordneten Komponente und macht den Rahmen außerhalb der abgerundeten Ecken transparent.
Zusätzliche Überlegungen:
Das obige ist der detaillierte Inhalt vonWie erstelle ich in Java einen abgerundeten Rahmen mit Transparenz?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!