Para desenhar em Java, precisamos lidar com coordenadas semelhantes ao plano cartesiano que aprendemos na escola,
sendo que, com coordenadas (0,0) no canto superior esquerdo. Veja a imagem abaixo: Agora, vamos ao código Java que cria uma simples Janela com um painel de desenho. Para começar, precisamos determinar qual o tamanho da janela e do
painel de desenho. Por exemplo, vamos criar uma janela com um painel de desenho de 640px de largura e 480px de altura. Veja o código abaixo O código acima é simples de entender e está comentado. Com a execução dele, é criada uma janela com algumas formas geométricas desenhadas. Perceba que
os códigos de desenho ficam no método "paintComponent". A partir daqui, os exemplos serão voltados apenas para os códigos que ficam no método paintComponent. Logo,
utilize o programa acima como modelo para os demais exemplos. Veja abaixo o resultado do código acima: Algo importante de ser compreendido em se tratando de desenho em uma linguagem de programação, é o cálculo feito com base em variáveis. Isto é, toda forma geométrica
pode ser representada por um polígono com vertices e arestas que ligam os vertices, formando assim a forma geométrica. Por exemplo, para desenhar em Java ou outra linguagem,
é importante conhecer as dimensões da tela ou painel de desenho, isto é, largura e altura da tela. outra coisa importante de se conhecer é sobre o sistema de coordenadas da
biblioteca gráfica utilizada. Em java, o eixo x do plano que representa a tela de desenho cresce de traz para frente, e o eixo y, cresce de cima para baixo, não de baixo para
cima como o sistema de coordenadas cartesiano que estudamos na escola. Veja mais adiante, um exemplo de desenho de um polígono de 6 lados iguais, um hexágono. Para o desenho de um hexágono, é necessário, caso queiramos centralizá-lo, conhecer as coordenadas do centro da tela. E, claro, para calcular as coordenadas do
centro da tela, é necessário o conhecimento da largura e altura da tela (painel) de desenho. Veja abaixo como determinar as coordenadas do centro da tela: Veja a imagem abaixo para compreender melhor o porquê das coordenadas centrais serem iguais a metade da largura e metade da altura. Isso, se tomarmos como base as coordenadas
(0,0). Perceba que para desenhar o polígono centralizado, tomamos como base as coordenadas do centro da tela, não a coordenada (0,0). O que significa que
o centro da tela é relativo as coordenadas (0,0) e o hexágono a ser desenhado terá como coordenadas iniciais as coordenadas do centro da tela. Agora vamos ao desenho do hexágono! Para desenhar o hexágono, precisamos determinar seus vertices como vetores bidimensionais relativos as coordenadas do centro da tela.
Veja o exemplo que ilustra um simples estudo do hexágono: Repare que o hexágono, por ter 6 lados, torna possível parti-lo em 6 pedaços, formando triângulos com ângulo agudo de 60º cada. Então, primeiramente, temos que calcular
esse ângulo que corresponde a 60º em radiano. Ou seja 60º é igual a ( PI / 3 ). Repare também que as coordenadas X,Y relativas ao centro da tela de desenho são os catetos
dos triângulos formados com ângulo de 60º. Logo, podemos aplicar os seguintes cálculos: Veja o código fonte abaixo em que são aplicados os cálculos acima: Perceba que no laço do exemplo acima, o angulo, a cada iteração, é incrementado em 60º (O ângulo da fatia do hexágono que corresponde a ( PI / 3 ) ). Isto é,
na primeira iteração, o angulo "a" corrresponde a zero, na segunda, a 60º na terceira a 120º e assim por diante até completar os 360º. Perceba também que, para
determinar as coordenadas, foram necessários calculos trigonométricos. Vamos fazer alguns calculos para determinar as coordenadas do hexágono. Como no exemplo acima o que varia a cada coordenada é apenas o ângulo que é incrementado em 60º, podemos utilizar um for (ou outro loop) para gerar os
vetores Xs e Ys do polígono a ser desenhado: o hexágono. Por isso, o código acima foi substituido pelo código abaixo. Agora, veja abaixo o código completo: Veja abaixo o resultado do programa acima: Veja abaixo um programa que fiz que mostra sobre o que é possível fazer com
gráficos em puro Java. Trata-se de um jogo produzido em Java com, apenas, a biblioteca gráfi
2cf
ca fornecida pela linguagem. Todos os personagens e componentes
do jogo são polígonos desenhados em Java. Abaixo o link para download do jogo "Batalha Estrelar": Para jogar, aperte o espaço para atirar e movimente a nave utilizando as setas do teclado Download: BE-1.2.jar E assim termino o primeiro artigo sobre computação gráfica com exemplos em Java. Espero que tenham gostado e, até a próxima! } catch ( LineUnavailableException ex ) {
throw new Exception( "Erro na abertura do arquivo de áudio." );
} catch ( FileNotFoundException ex ) {
throw new Exception( "\""+arquivoAudio+"\"\nArquivo não encontrado." );
} catch ( IOException ex ) {
throw new Exception( "Erro na leitura do arquivo de áudio." );
}
}
}
Observe primeiramente o método "getInstance", a variável privada e estática
"instance" e o construtor privado como o único na classe. São características
de uma classe Singleton!
Agora, você pode entender como a chamada ao método "play" no método principal funciona.
Mas, entenda também que a classe AudioPlayer tem, de fato, o método de nome "play"
que recebe o caminho do arquivo de áudio para tocar.
O método "play"
Pronto! Vamos agora focar no método "play" para entender como ele funciona. Perceba que há a
possibilidade de uma exceção tipo Exception ser lançada com uma mensagem personalizada e
capturada no método principal. O ideal era criar uma classe de exceção personalizada. Mas, por
questões de simplicidade, utilizei a classe Exception mesmo. Se uma exception é lançada pelo
método "play", é mostrada uma janelinha com a mensagem personalizada.
Singleton com multithreading
Como o singleton utiliza um atributo e um método estático, talvez não seja uma boa idéia utilizar
essa solução em um ambiente concorrente.
O download do código fonte
Abaixo o link de download do código fonte do projeto que toca um áudio.
Link de download:
singleton-exemplo.zip
Após baixar o projeto, você pode compilar se estiver com o JDK. Então, use a linha de
comandos para entrar na pasta base do projeto descompactado e utilize o seguinte comando
para compilar:
javac -d bin src/singleton/*.java src/singleton/audio/*.java
Agora para rodar, basta utilizar o seguinte comando:
java -cp bin singleton.Main oi-meu-chapa.wav
No comando acima, você pode passar qualquer arquivo de áudio em formato ".wav" no
lugar de "oi-meu-chapa.wav". Se não passar o arquivo, o "picapau.wav" é
executado por padrão, conforme o comando abaixo:
java -cp bin singleton.Main
Finalizando...
Esse é o final de mais um artigo sobre padrões de projeto. Desta vez, o
padrão singleton foi discutido aqui. Espero que tenham
gostado e, até o próximo!
1463
Escrito por:
Ítalo Herbert
Última alteração feita em:
25/10/2024 19:48:47
Tags relacionadas:
singleton, padrão, design, pattern, java, prog, programação, refactoring,
qualidade, código
Você também pode gostar:
Padrão DecoratorDesenho da bandeira do BrasilDesenhando em JavaPadrão ObserverPrincípios SOLID
Deixe seu comentário
Nome:
E-Mail:
Comentario: obrigatório
Mostrar na lista de comentários
Código de verificação:
Digite o código: obrigatório
Enviar
Limpar
Comentários postados: Nenhum comentario visível postado até o momento, deixe o seu!
Política de privacidade
Produzido por Ítalo Herbert
0
o( decorator, 75, Color.RED );
Decoradores de desenhos - Bandeira do Japão
Abaixo o link de download do código fonte do projeto que desenha uma bandeira.
Link de download:
decorator-exemplo.zip
Após baixar o projeto, você pode compilar se estiver com o JDK. Então, use a linha de comandos
para entrar na pasta base do projeto descompactado e utilize o seguinte comando para compilar:
javac -d bin src/bandeira/desenho/*.java src/bandeira/*.java
Agora para rodar, basta utilizar o seguinte comando:
java -cp bin bandeira.BandeiraMain
Baixe, compile e rode o projeto e experimente adicionar novos decoradores, ou remover
decoradores encadeados ou, mesmo, alterar a ordem das instâncias e teste novamente para
ver que gráfico é gerado!
Finalizando...
Esse é o final de mais um artigo sobre padrões de projeto. Desta vez, o
padrão decorator foi discutido aqui. Espero que tenham
gostado e, até o próximo!
1435
Escrito por:
Ítalo Herbert
Última alteração feita em:
25/10/2024 19:37:57
Tags relacionadas:
decorator, prog, programação, java, padrão, design, patterns,
qualidade, código
Você também pode gostar:
Padrão SingletonDesenhando em JavaPadrão ObserverPrincípios SOLIDDesenho da bandeira do Brasil
Deixe seu comentário
Nome:
E-Mail:
Comentario: obrigatório
Mostrar na lista de comentários
Código de verificação:
Digite o código: obrigatório
Enviar
Limpar
Comentários postados: Nenhum comentario visível postado até o momento, deixe o seu!
Política de privacidade
Produzido por Ítalo Herbert
0