Esse artigo faz parte da revista Java Magazine edição 13. Clique aqui para ler todos os artigos desta edição.

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 funciona­lidades. As classes da API são construídas sobre o tradicional AWT (Abstract Win­dow Toolkit), estendendo funcionalidades existentes e acrescentando muitas novas. São incluídas com o Java Runtime Envi­ronment (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 recur­sos 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 componen­tes (janelas, painéis, botões etc.) na tela, incluindo seu posicionamento, tamanho, componente “pai” e outras características. Cada componente é responsável pela ma­neira 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 apre­senta 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 conside­rar adequado – por exemplo, no momento que o painel é desenhado a primeira vez,  ou quando a janela que o contém for redi­mensionada.

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 transpa­rê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 preen­chimento, utilizando os estilos de cores, linhas e junções ativos


       ...

Quer ler esse conteúdo completo? Tenha acesso completo