Tenho um panel size=500x500 que é usado como base para desenhar algumas figuras geométricas.
Acontece que o tamanho e localização das figuras é determinado pelo usuário. Às vezes, dependendo do valor que o usuário entra, as figuras são desenhadas fora da area visível do panel(as figuram não aparecem). E também, o usuário pode aplicar varias transformaçoes(shear, rotate, translate…) e muitas vezes faz com que as figuras saiam da área visível.
Como poderia tratar esses erros?
[code]public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
this.setBackground(new java.awt.Color(255, 255, 255));
//desenha linhas do painel
g2d.setColor(randomColor());
g2d.transform(t);
//desenha elipse
if (TransformTestFrame.circun.isSelected()) {
elipse = new Ellipse2D.Double(posicaox,posicaoy, comprimento, largura);
g2d.setPaint(new GradientPaint(0, 0, randomColor(), 175, 175, randomColor(),true));
g2d.fill(elipse);
g2d.draw(elipse);
g2d.setColor(Color.black);
int x=(int) elipse.getCenterX();
int y=(int) elipse.getCenterY();
}
//desenha triangulo
else if (TransformTestFrame.triang.isSelected()) {
polyg = new Polygon();
polyg.addPoint(px[0], py[0]);
polyg.addPoint(px[1], py[1]);
polyg.addPoint(px[2], py[2]);
g2d.setPaint(new GradientPaint(0, 0, randomColor(), 175, 175, randomColor(),true));
g2d.draw(polyg);
g2d.fill(polyg);
}
//desenha retangulo
else if (TransformTestFrame.retangulo.isSelected()) {
rectang = new Rectangle2D.Double();
rectang.setRect(this.posicaox, this.posicaoy,TransformPanel.comprimento,TransformPanel.largura);
g2d.setPaint(new GradientPaint(0, 0, randomColor(), 175, 175, randomColor(),true));
g2d.draw(rectang);
g2d.fill(rectang);
}
}
public void setRotate()
{
t.setToRotation(Math.toRadians(angulo));
repaint();
}
public void setRotateTranlate()
{
t.setToRotation(Math.toRadians(angulo), translatex, translatey);
repaint();
}
public void setTranslateInt()
{
t.setToTranslation(posx, posy);
repaint();
}
public void setTranslateDouble()
{
t.setToTranslation(translatex, translatey);
repaint();
}
public void setScale()
{
t.setToScale(fatorx, fatory);
repaint();
System.out.println("setscale");
}
public void setShear()
{
t.setToShear(fatorx,fatory);
repaint();
System.out.println(“setshear”);
}
public void setFlipX()
{
repaint();
}
public void setFlipY()
{
repaint();
}[/code]