"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como criar uma borda arredondada com transparência em Java?

Como criar uma borda arredondada com transparência em Java?

Publicado em 2024-11-25
Navegar:512

How to Create a Rounded Border with Transparency in Java?

Borda com cantos arredondados e transparência

Esta questão aborda a questão da criação de uma borda arredondada com transparência, permitindo que o componente subjacente seja exibido . A solução envolve a modificação da classe TextBubbleBorder para pintar a cor de fundo do pai fora da região do clipe da borda.

Solução:

A modificação feita na classe TextBubbleBorder é como segue:

// 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 recupera o componente pai e sua cor de fundo. Em seguida, ele cria uma área que representa a região da borda e subtrai dela as áreas da bolha e do ponteiro. Isso define a região fora da borda.

Com a região do clipe definida, o código preenche a região com a cor de fundo do componente pai, tornando a borda transparente fora dos cantos arredondados.

Considerações adicionais:

  • Existe um bug no código original, causando um problema de recorte. Este bug foi corrigido na "correção de bug de recorte" para o método paintComponent().
  • Ao definir o tamanho do ponteiro como 0, a borda se transforma em um retângulo arredondado padrão.
  • Um parâmetro left é introduzido no construtor TextBubbleBorder para criar bolhas alinhadas à direita se definido como false.
Tutorial mais recente Mais>

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