web, corporativa e móvel, porém muitos não conhecem as APIs Java para aplicações de domínios mais específicos, como manipulação e processamento de imagens. Java oferece um conjunto de modernas APIs gráficas que dão suporte aos mais diversos tipos de necessidades, como Java 3D, Java Media Framework (JMF) e Java 2D, assunto desta série de artigos.
A API Java 2D oferece suporte à criação e manipulação de gráficos e imagens, animações, transformações geométricas e impressão, entre muitas outras funcionalidades. As classes da API são construídas sobre o tradicional AWT (Abstract Window Toolkit), estendendo funcionalidades existentes e acrescentando muitas novas. São incluídas com o Java Runtime Environment (JRE), e ficam no pacote java.awt e em alguns subpacotes, como java.awt.image e java.awt.image.geom.
Processo de renderização
Para tirar o máximo proveito dos recursos do Java 2D, precisamos compreender o processo de renderização de Java, a maneira como é gerenciada a exibição dos componentes. Um sistema de desenho é responsável pela exibição dos componentes (janelas, painéis, botões etc.) na tela, incluindo seu posicionamento, tamanho, componente “pai” e outras características. Cada componente é responsável pela maneira que será renderizado, incluindo seus textos, cores e imagens. A renderização é feita no método paint(), herdado da classe abstrata java.awt.Component e redefinido em cada componente com o código específico de desenho.
A Figura 1 mostra como funciona a renderização para um painel simples com três botões. O diagrama de seqüência apresenta as mensagens enviadas pelo sistema de desenho para o painel e do painel para os botões. As mensagens representam chamadas ao método paint(). São realizadas sempre que o sistema de desenho considerar adequado – por exemplo, no momento que o painel é desenhado a primeira vez, ou quando a janela que o contém for redimensionada.
O coração da API
A classe java.awt.Graphics2D é a principal do Java 2D. Ela representa o contexto gráfico e gerencia toda a renderização. Estende java.awt.Graphics, classe usada para a renderização antes da chegada do Java 2D. Uma vez obtida uma instância de Graphics2D, temos disponíveis métodos para desenho de formas básicas, imagens, textos e outras operações gráficas. Para manipular gráficos em Java, não criamos diretamente um objeto Graphics2D. Ele é criado pela própria JVM, e passado para a aplicação como parâmetro do método paint(), como veremos adiante.
Alguns atributos da classe Graphics2D são essenciais no momento da renderização. Resumidamente:
• paint – define o estilo de cor ou textura utilizado para o desenho
• stroke – especifica o estilo de linha
• font – define o tipo, estilo e o tamanho da fonte
• composite – especifica efeitos de transparência e composição
• clip – determina a área visível do
gráfico
• affineTransform – para transformações, como translação e rotação (transformações serão mostradas na segunda parte do
artigo)
• renderingHints – define a qualidade da renderização, ativando recursos como suavização de serrilhado
Os principais métodos de renderização da classe Graphics2D são:
• draw() – desenha uma forma sem preenchimento, utilizando os estilos de cores, linhas e junções ativos
• ...