Hallo erstmal.
Folgendes Problem:
Ich habe ein beliebiges Anfangsbild(z.B. ein Viereck). Auf dieses Bild soll dan eine affine Transformation
angewendet werden und aufs JPanel gemalt werden. dadurch entsteht ein neues Bild(das alte Bild bleibt noch erhalten).
Nun soll auf dieses Bild erneut eine affine Transformation angewesendet werden etc.
Mein Problem ist nun, dass ich es nicht hinbekomme, dass die neue affine Transformation auf das gesamte neue Bild angewendet wird, sondern nur auf das Ursprungsobject.
Habe schon diverese Sachen gegoogled und hier um Forum mich umgesehen, aber bin nicht wirklich weitergekommen. Dabei hab ich schon versucht, das JPanel als Image oder Shape zu bekommen.
Würde mich über Hilfe freuen.
Gruß, Siedler.
Hier noch der bisherige Quellcode:
Ausgelöst werden soll das ganze durch diesen ActionListener:
Folgendes Problem:
Ich habe ein beliebiges Anfangsbild(z.B. ein Viereck). Auf dieses Bild soll dan eine affine Transformation
angewendet werden und aufs JPanel gemalt werden. dadurch entsteht ein neues Bild(das alte Bild bleibt noch erhalten).
Nun soll auf dieses Bild erneut eine affine Transformation angewesendet werden etc.
Mein Problem ist nun, dass ich es nicht hinbekomme, dass die neue affine Transformation auf das gesamte neue Bild angewendet wird, sondern nur auf das Ursprungsobject.
Habe schon diverese Sachen gegoogled und hier um Forum mich umgesehen, aber bin nicht wirklich weitergekommen. Dabei hab ich schon versucht, das JPanel als Image oder Shape zu bekommen.
Würde mich über Hilfe freuen.
Gruß, Siedler.
Hier noch der bisherige Quellcode:
Ausgelöst werden soll das ganze durch diesen ActionListener:
Java:
class ActionListenerAff2 implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
AffineTransform add = new AffineTransform(0.5, 1, 1.2, 0.4, 80, 20);
paintarea.setAffineTransform(add);
paintarea.repaint();
}
}
Java:
public class PaintArea extends JPanel {
private AffineTransform trans;
private Rectangle rect;
public PaintArea() {
this.trans = new AffineTransform(1, 0, 0, 1, 0, 0);
this.rect = new Rectangle(1, 1, 10, 10);
this.setSize(300, 300);
}
public void setAffineTransform(AffineTransform trans) {
this.trans = trans;
}
public void setRectangle(Rectangle rect) {
this.rect = rect;
}
public Rectangle getRectangle() {
return this.rect;
}
public AffineTransform getAffineTransform() {
return this.trans;
}
@Override
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.transform(trans);
g2d.setColor(Color.red);
g2d.draw(rect);
}
}