Cantos transparentes na borda com cantos arredondados
No código fornecido, a classe TextBubbleBorder pinta um retângulo arredondado com um ponteiro triangular na parte inferior . Entretanto, os cantos fora do retângulo se estendem um pouco, mostrando a cor de fundo do painel pai. Para obter cantos transparentes, modificamos o método paintBorder para incluir uma etapa 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 se o componente tem um pai, recupera sua cor de fundo e cria um retângulo representando toda a região da borda. Em seguida, ele cria um objeto Area borderRegion que representa esse retângulo. Em seguida, ele subtrai a área que representa o balão de texto de borderRegion, criando uma Área chamada clip que representa a área fora do balão de texto.
Com clip, o código define a região de recorte para o objeto Graphics2D, preenche-o com a cor de fundo do pai e, em seguida, redefine a região de recorte para desenhar a própria borda. Isso garante que os cantos fora do retângulo arredondado fiquem transparentes, mostrando a cor de fundo do pai.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3