Salve,
Non mi risolve il problema. Dopo averla ruotata di 90° questa immagine devo poterla spostare modificando le sue coordinate ma mantenendola ruotata. Per fare questo ho scritto un metodo setPaintPos()
codice:
public void setPaintPos(int ptx,int pty){
icoPx=ptx;
icoPy=pty;
repaint();
}
Questo è il codice modificato:
codice:
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d =(Graphics2D)g;
AffineTransform oldTransform = g2d.getTransform();
g2d.translate(icoH,0);
g2d.rotate(Math.toRadians(90));
icon.paintIcon(this, g2d, icoPx, icoPy);
}
g2d.setTransform(oldTransform);
}
Cosi facendo mi salva la matrice, mi ruota l'immagine, me la disegna (a 90°) poi ripristina la matrice.
Per poterla spostare di 100 pixel a destra e 100 pixel in basso devo farlo con il sistema di assi rovescoiato ossia per abbassarlo di 100 devo dare x=100 e per spostarlo a destra di 100 devo dare y=-100. Perchè il metodo chiama il repaint per ridisegnare l'immagine nella nuova posizione e quindi ripete gli stessi passi: salva la matrice, ruota di 90° ridisegna con le nuove cordinate ma nel sistema rovescio, poi ripristina. In poche parole così non riesco a spostarla usando il sistema al dritto.
Ho provato anche cosi:
codice:
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d =(Graphics2D)g;
AffineTransform oldTransform = g2d.getTransform();
g2d.translate(icoH,0);
g2d.rotate(Math.toRadians(90));
g2d.setTransform(oldTransform);
icon.paintIcon(this, g2d, icoPx, icoPy);
}
Ora le coordinate per spostarla sono quelle con gli assi al dritto, ma l'immagina non è più a 90°.
Quindi a cosa mi serve salvare e ripristinare la matrice?
Non si più congelare l'immagine a 90° ed usare le coordinate normali!? Non credo. Dovrò ragionare con coordinate rovesce. Aimé.
Ciao