Java 2D - Java 2D
Em computação , Java 2D é uma API para desenhar bidimensionais gráficos usando o linguagem de programação Java . Cada operação de laminagem Java 2D pode em última análise ser tratada como enchimento uma forma utilizando uma tinta e a composição do resultado sobre a tela .
Conteúdo
Organização
A API Java 2D e sua documentação estão disponíveis para download como parte de classes API JDK 6. Java 2D são organizados nos seguintes pacotes no JDK 6:
-
java.awtO pacote principal para o Java Toolkit Abstract Window . -
java.awt.geomA biblioteca Java padrão de duas formas geométricas tridimensionais, tais como linhas, elipses e quadriláteros. -
java.awt.fontA biblioteca para manipulação de glifos em Java. -
java.awt.colorA biblioteca lidar com as muitas maneiras diferentes que a cor pode ser representados. -
java.awt.imageA biblioteca para manipulação de imagens gráficas. -
java.awt.printA biblioteca de ferramentas para escrever no papel.
Conceitos básicos
Esses objetos são uma parte necessária de cada operação de desenho Java 2D.
Shapes
Uma forma em Java 2D é uma fronteira que define um interior e um exterior. Pixels dentro da forma são afectados pela operação de estiramento, fora aqueles não são.
Tentando preencher uma reta segmento de linha vai resultar em nenhum pixels sendo afetados, como tal, uma forma não contém quaisquer pixels em si. Em vez disso, uma fina retângulo deve ser utilizado para que a forma contém alguns pixels.
tintas
A pintura gera as cores a serem usadas para cada pixel da operação de enchimento. A pintura mais simples é java.awt.Color, o que gera a mesma cor para todos os pixels. Mais tintas complicados podem produzir gradientes, imagens , ou qualquer combinação de cores. Encher uma forma circular usando a cor amarelo resultados em um círculo sólido amarelo, ao encher a mesma forma circular, utilizando uma tinta que gera uma imagem produz um recorte circular da imagem.
Composites
Durante qualquer operação de desenho, há uma fonte (os pixels sendo produzido pela pintura) e um destino (os pixels já na tela). Normalmente, a fonte pixels simplesmente substituir os pixels de destino, mas o composto permite que esse comportamento para ser alterado.
O composto, tendo em conta as de origem e de destino pixels, produz o resultado final, que em última análise, acaba na tela. O composto mais comum é java.awt.AlphaComposite, que possa tratar os pixels a ser desenhada como parcialmente transparente, de modo que os pixels de destino mostrar através de algum grau.
O preenchimento
Para preencher uma forma, o primeiro passo é identificar quais pixels queda dentro da forma. Estes pixels será afetada pela operação de enchimento. Pixels que são parcialmente dentro e parcialmente fora da forma pode ser afectada em menor grau, se o anti-aliasing está activada.
A tinta é então solicitado para gerar uma cor para cada um dos pixels a ser pintada. No caso comum de um preenchimento de cor sólida, cada pixel será definido para a mesma cor.
O composto tem os pixels gerados pela pintura e combina-los com os pixels já na tela para produzir o resultado final.
objetos avançados
Estes objectos podem ser vistos como desempenho das suas funções em termos dos objectos mais simples descritas acima.
Transformar
Cada operação Java 2D está sujeito a uma transformação , de modo que formas podem ser traduzidos, girado, cortado, e escalado como eles são desenhados. O ativo transformar é na maioria das vezes a transformar identidade , que não faz nada.
Enchimento usando uma transformação pode ser visto como simplesmente criar uma nova forma, em seguida, transformado e enchimento que forma.
Acidente vascular encefálico
Além do preenchimento operação, Java 2D fornece um empate operação. Enquanto preenchimento desenha o interior de uma forma, draw desenha seu contorno. O contorno pode ser tão simples como uma linha fina, ou tão complicada como uma linha a tracejado com cada painel tendo bordos arredondados.
O objecto responsável por gerar o esboço é o acidente vascular cerebral . Dada uma forma de entrada, o acidente vascular cerebral produz uma nova forma que representa o seu contorno. Por exemplo, um segmento de linha infinitamente fino (sem interior) pode ser afagado num rectângulo com um pixel de largura.
A operação de desenho pode, portanto, ser descrita como a criação de um novo objecto, afagado e, em seguida, enchimento esse objecto.
Tecnicamente falando, o curso só é obrigado a aceitar uma forma de entrada e produzir uma nova forma. A implementação tempos equipados com Java 2D implementa as regras de contorno descritas acima, mas um golpe-de costume escrita poderia produzir qualquer forma que quisessem.
otimizações
Conceitualmente, desenhando uma linha reta preta em Java 2D pode ser pensado como a criação de um segmento de linha, transformando-o de acordo com a transformação atual, acariciá-lo para criar um retângulo fino, consultando esta forma de calcular os pixels sendo afetado, gerando os pixels usando java.awt.Color.BLACK, e, em seguida, a composição dos resultados sobre a tela.
No entanto, realizando toda esta sequência de passos para cada operação de desenho seria muito ineficiente. portanto, Java 2D otimiza as operações de desenho comuns para que muitos destes passos podem ser ignorados. Se a pintura é uma cor sólida simples, por exemplo, não há necessidade de realmente comandá-la para gerar uma lista de cores a ser pintado. Da mesma forma, se o padrão composta totalmente opaco está em uso, na verdade, pedindo-lhe para executar a operação de composição é desnecessária e seria desperdiçar esforço.
Java 2D realiza a quantidade mínima de trabalho necessário para fazê-la parecer como se estivesse a execução de todas essas etapas para cada operação, portanto, mantendo ambos uma grande flexibilidade e alto desempenho.
Destino
Para simplificar, os exemplos textuais previstos neste artigo têm assumido que a tela é o dispositivo de destino. No entanto, o destino pode ser qualquer coisa, como uma impressora, imagem de memória, ou mesmo um objeto que aceita comandos gráficos Java 2D e os traduz em gráfico vetorial arquivos de imagem.
Java2D / OpenGL interoperabilidade
Desde Java SE 6 , Java2D e OpenGL tornaram-se interoperáveis, permitindo, por exemplo, o desenho de animação gráfica 3D em vez de ícones em um botão (ver JOGL ).