Pessoal, estou desenvolvendo uma interface onde o usuario escolhe uma forma geométrica(triangulo, circulo, retangulo), entra com os valores(tamanho e localizacao), clica no botao Desenhar e essa interface deve desenhar essas imagens na tela.
Logo apos o usuario pode selecionar uma das transformacoes (rotate, scale, shear, translate),entrar com os valores, e clicar no botao Transformar e o programa deve transformar a imagem de acordo com os parametros.
Problemas encontrados:
1- a imagem é gerada na tela em qualquer posição: preciso delimitar um espaço onde será desenhado a imagem. Como devo proceder?
2- Quando o usuario desenha uma imagem e logo em seguida muda os parametros e clica em desenhar novamente, o programa desenha outra imagem sem apagar a primeira. Como faço para apagar a imagem gerada?
3-O botão Transformar não funciona. Nao faz nenhuma transformacao.
4- Quais são as formas corretas de se usar o repaint() e update()?
Por favor, deem uma luz!!! já tem 15 dias que estou quebrando a cabeça com isso e não consigo resolver. Os tutoriais e apostilas da net são muito superficiais nesse assunto.
Resumidamente esse é meu codigo
public class Principal extends javax.swing.JFrame {
public Graphics2D d;
}
public void paint (Graphics2D d){
d.setColor (Color.BLUE);
//desenha retangulo
if(retangulo.isSelected()){
posicaox= Integer.parseInt(posx.getText());
posicaoy= Integer.parseInt(posy.getText());
comprimento= Integer.parseInt(comp.getText());
largura= Integer.parseInt(larg.getText());
d.drawRect(posicaox, posicaoy ,comprimento , largura);
}
//desenha circulo
if(circun.isSelected()){
posicaox= Integer.parseInt(posx1.getText());
posicaoy= Integer.parseInt(posx1.getText());
comprimento= Integer.parseInt(comp1.getText());
largura= Integer.parseInt(larg1.getText());
d.drawOval(posicaox, posicaoy ,comprimento , largura);
}
//desenha triangulo
if(triang.isSelected()){
p1x= Integer.parseInt(x1.getText());
p1y= Integer.parseInt(y1.getText());
p2x= Integer.parseInt(x2.getText());
p2y= Integer.parseInt(y2.getText());
p3x= Integer.parseInt(x3.getText());
p3y= Integer.parseInt(y3.getText());
d.drawLine(p1x, p1y, p2x, p2y);
d.drawLine(p2x, p2y, p3x, p3y);
d.drawLine(p3x, p3y, p1x, p1y);
}
//Transformar translateDouble
if(transd.isSelected()){
translatex= Double.parseDouble(tx.getText());
translatey= Double.parseDouble(ty.getText());
d.translate(translatex, translatey);
}
//Transformar translateInt
if(transi.isSelected()){
posicaox= Integer.parseInt(tix.getText());
posicaoy= Integer.parseInt(tiy.getText());
d.translate(posicaox, posicaoy);
}
//Transformar rotateDoble
if (rotate.isSelected()){
angulo= Double.parseDouble(ang.getText());
d.rotate(angulo);
}
//Transformar RotateTranslate
if (rotatem.isSelected()){
angulo= Double.parseDouble(rmang.getText());
translatex= Double.parseDouble(rmx.getText());
translatey= Double.parseDouble(rmy.getText());
d.rotate(angulo, translatex, translatey);
}
//Transformar Scale
if(scale.isSelected()){
fatorx= Double.parseDouble(fx.getText());
fatory= Double.parseDouble(fy.getText());
d.scale(fatorx, fatory);
}
//Transformar Shear
if(shear.isSelected()){
fatorx= Double.parseDouble(sx.getText());
fatory= Double.parseDouble(sy.getText());
d.shear(fatorx, fatory);
}
}
//acao do botão Desenhar
private void desenhActionPerformed(java.awt.event.ActionEvent evt) {
repaint();
}
//acao do botão Transformar
private void transformarActionPerformed(java.awt.event.ActionEvent evt) {
repaint();
}