movimentação da figura

4 respostas
V

Olá amigos, estou desenvolvendo um editor de imagens em java…
com muito esforço ja consegui algumas coisas…
tenho a necessidade de no momento realizar a seguinte tarefa:
existe uma determinada figura e se eu clicar dentro dela queria arrasta-la para qualquer ponto da tela…
quanto a parte de tratamento de eventos do mouse ja está tranquila…gostaria de que pudessem me ajudar a encontrar o modelo matematico para que eu consiga realizar a movimentação da figura com o mouse…

Desde ja, grato.

Até mais.

4 Respostas

Banzai10

Não sei o que tu queres dizer com o modelo matemáico,

porém o cálculo é simples, pegue a posição do mouse em relação a figura quando o clique aconteceu,

subtraia a altura e a largura total da imagem por esta posição, e você vai ter o offset.

Depois disto quando largares o mouse, adicione o offset no ponto que largou o mouse e tcharam,

a figura foi movida como desejado.

Se quiseres fazer o efeito de arrastando trate o evento de movimento do mouse da mesma maneira.

Espero ter ajudado e não esqueças de entrar no meu blog Felipe Lopes.

V

Olá amigo, tentei utilizar a sua idéia aqui para realizar isto, mas não consegui…

a figura simplesmente sai da area de desenho…

obs: estou utilizando a classe Rectangle2D.Doule e estou usando a classe Point2D pra desenhar o retangulo por exemplo…

public Shape gerarFigura2D(Point2D pontos[]) {

		Rectangle2D.Double retangulo = new Rectangle2D.Double();
		retangulo.setFrameFromDiagonal(pontos[0], pontos[1]);
		return retangulo;
   }
T

O seu editor tem varias imagens neh ? vc deve armazenar elas em alguma lista, e então a tela do seu editor é redesenhada o tempo todo.
Não sei detalhes dos objetos que vc esta usando para representar um retangulo, mas esse deve conter algo como a X,Y Inicial, altura e largura ou X,Y Final…
Quando vc clicar com mouse (evento press… )no seu editor, vc tem que descobrir qual das imagens vc clicou em cima, com os dados que falei acima já é suficiente pra descobrir isso.
Tendo feito isso, quando vc soltar o mouse (evento release), vc pega a posição X,Y que vc soltou… Vai no “Objeto retangulo” que vc clicou em cima antes, e Seta as novas propriedades (fazendo os calculos que o vmsb11 falou)…
Assim a proxima vez que a tela for redesenhada ele vai aparecer la…

Para fazer o efeito de arrastar bonitinho… então vc tem que usar o evento de arrastar o mouse (ñ lembro o nome)…
então a cada “Evento Arrastar” vc faz o mesmo procedimento acima do evento release

ivo_costa

Aqui tem um editor de imagens open source, provavelmente deve ter algum código fonte que te ajude:
http://www.guj.com.br/posts/list/89339.java

Criado 31 de agosto de 2008
Ultima resposta 1 de set. de 2008
Respostas 4
Participantes 4