Java2D rotação de imagens

11 respostas
M

Ola amigos!

Já li e continuo lendo tutorias sobre Java2D e afins, acompanho o site pontoV do Viny(muito bom por sinal)

Então comecei a desenvolver este software http://www.megaupload.com/?d=8T0SA15A(neste link vc baixa o projeto netbeans que estou trabalhando).
Comecei a desenvolver este software apenas para aprender sobre java 2d, no momento não tenho a pretensão de desenvolver uma super ferramente para o desenvolvimento de animação em java 2d, é mais uma experiência de estudos. Bom mas vamos ao problema. Estou com dificuldades para trabalhar com a rotação das imagens.

Quem puder baixar o código do projeto e abrir no netbeans(uso o netbeans 6.9), ao executar o aplicativo, adicionar uma imagem, selecionar a ferramenta de rotação que estou tentando criar vai poder verificar a minha dificuldade.
Se alguém tiver alguma dica de como melhorar esta minha ferramenta(por sinal não esta legal) ficarei muito agradecido.

Obs.: Só pra deixar claro, este projeto é apenas uma forma de aprender programar programando, no momento não tenho a pretensão de que seja um projeto sério.

11 Respostas

V

Dica. Zipe apenas a pasta source, e anexe aqui no GUJ mesmo, usando o botão de attachments. Já vou ver seu código.

V

Não consegui inserir uma imagem. Como faz?

Outra dica, evite usar acentuação em variáveis do seu código.

Aliás, também seria bom se:

  1. Você dissesse claramente qual é o problema que você está tendo (preferencialmente com um screenshot) - ou dissesse os passos EXATOS para simula-lo;
  2. Dissesse em que trecho do código você faz a pintura;
  3. Dissesse como funciona o mecanismo de pintura do seu programa.
M

Valeu Vini, pois é tem coisas bizarras no meu codigo sim. Existem coisas que escrevi o mês passado que podeira escrever melhor hoje e certamente escreveria melhor daqui a um mês.
Segue uma descrição melhor da situação:

1 - Para simular o problema voçê insere uma imagem, seleciona esta imagem, e seleciona a ferramenta de rotacionar. O problema é que depois que eu rotaciono a imagem fica dificil de trabalhar com ela, principalmente na hora de mover. Tambem estou com dificuldade de rotacionar a imagem apartir de um centro de rotação pre especificado.

Uma parte da dinâmica de rotacionamento de imagens ocorre na classe daydream.controles.mouse.MouseDragged -> método processar(MouseEvent)

2 - Escrevi a classe daydream.componentes.palco.PintorPalco, as pinturaras ocorrem no metodo: public void pintar(Graphics2D g2, EventoPalco acao){… outros métodos de pintura}

Para inserir uma imagem pode-se usar o meu inseir->imagem, ou o botão de inserir imagem na barra de ferramentas ao lado do palco(botão com um circulo acima de um triângulo);
Ao clicar no botão uma nova janela se abrira onde vc podera clicar no botão adicionar, que abrirá o JFileChooser.
Escolha a(s) imagens. Um nome sera criado para cada imagem(é possivel renomea-las), estas serão inseridas no componente JList abaixo do botão adicionar.
Depois selecione a imagem que vc vai inserir no palco e clique no botão inserir imagem, em seguida clique na area do palco onde vc deseja inserir a imagem.

Para rotacionar a imagem é necessário seleciona-la.

M

zip do fonte

V

Organize seus métodos de forma que:

  1. Todos os objetos são desenhados no centro do sistema de coordenadas. Esse será o sistema de coordenadas próprio do objeto;
  2. Rotações irão ocorrer nesse centro;
  3. Translações serão feitas na sequência (cuidado pois a ordem da multiplicação das matrizes afeta a pintura);

O problema é que quando uma imagem gira, seu bounding box deixa de ser alinhado aos eixos. O java não tem métodos para tratar colisões ou intersessões com retângulos inclinados. E aí deve estar sua dificuldade. Isso teria que ser implementado no braço.

M

Cara é isso mesmo.
Eu achei que eu tinha criado esta dificuldade dada a minha falta de experiência, mas pelo que disse o trabalho é esse mesmo. Valeu, vou continuar pesquisando o assunto e trabalhando no código. Valeu Vini.

V

Esse problema você não teria se estivesse implementando em C# com XNA. Ou futuramente, no Alegria2D. :slight_smile:

M

C# XNA esta fora de cogitação(nada contra).

Ja estou olhando este projeto Alegria2D parece interessante.

V

Nada contra pq?

Ainda está nas primeiras etapas do desenvolvimento. Não temos nada pronto ainda. Por enquanto, é quase tão difícil de usar quanto LWJGL direto.

M

mdea wrote:C# XNA esta fora de cogitação(nada contra).

Nada contra pq?

É que geralmente quando se diz que não gosta de C#(no meu caso é falta de interesse mesmo), abre-se a possibilidade da velha discussão inútil “Java Vs C#”. Eu particularmente nunca tive interesse na plataforma .NET assim como não duvido de sua qualidade. Mas enfim, vou ficar de olho neste projeto Alegria2D.

M

http://code.google.com/p/alegria/wiki/AlegriaWelcome

Criado 5 de fevereiro de 2011
Ultima resposta 11 de fev. de 2011
Respostas 11
Participantes 2