Heim  >  Artikel  >  Java  >  Wie erstelle ich in Java einen abgerundeten Rahmen mit Transparenz?

Wie erstelle ich in Java einen abgerundeten Rahmen mit Transparenz?

Barbara Streisand
Barbara StreisandOriginal
2024-11-17 16:23:02145Durchsuche

How to Create a Rounded Border with Transparency in Java?

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:

  • Im Originalcode liegt ein Fehler vor, der ein Clipping-Problem verursacht. Dieser Fehler wurde im „Clipping Bug Fix“ für die Methode paintComponent() behoben.
  • Durch Setzen der Zeigergröße auf 0 verwandelt sich der Rahmen in ein standardmäßiges abgerundetes Rechteck.
  • Ein Parameter left wird im TextBubbleBorder-Konstruktor eingeführt, um rechtsbündige Blasen zu erstellen, wenn dieser Wert auf false gesetzt ist.

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!

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