Esquinas transparentes en borde con esquinas redondeadas
En el código proporcionado, la clase TextBubbleBorder pinta un rectángulo redondeado con un puntero triangular en la parte inferior . Sin embargo, las esquinas fuera del rectángulo se extienden un poco, mostrando el color de fondo del panel principal. Para lograr esquinas transparentes, modificamos el método paintBorder para incluir un paso adicional:
// 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); }
Este código verifica si el componente tiene un padre, recupera su color de fondo y crea un rectángulo que representa toda la región del borde. Luego crea una región fronteriza de objeto de área que representa este rectángulo. A continuación, resta el área que representa la burbuja de texto de la región del borde, creando un área llamada clip que representa el área fuera de la burbuja de texto.
Con clip, el código establece la región de recorte para el objeto Graphics2D, la rellena con el color de fondo del padre y luego restablece la región de recorte para dibujar el borde mismo. Esto asegura que las esquinas fuera del rectángulo redondeado se vuelvan transparentes, mostrando el color de fondo del padre.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3