Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Rotazione Immagini e ridimensionamento dinamico del container
Forum - Java - Rotazione Immagini e ridimensionamento dinamico del container

Avatar
redelux (Normal User)
Newbie


Messaggi: 4
Iscritto: 07/07/2009

Segnala al moderatore
Postato alle 13:07
Martedė, 07/07/2009
Salve, dovrei cercare di far ruotare delle immagini contenute in delle JLabel. La rotazione avviene correttamente in quanto ho ridefinito il metodo paintComponent di JLabel ed ho utilizzato il metodo rotate di Graphics2D. Il problema č che quando ruoto l'immagine mi vengono tagliati gli spigoli in quanto l'immagine ruotata occupa pių spazio di quella originale. L'effetto che vorrei ottenere č quello di far adattare dinamicamente il container in questo caso la Jlabel in funzione della rotazione che imprimo all'immagine oppure fare il contrario ovvero adattare l'immagine ruotata alla dimensione della jLabel. Secondo voi č possibile?

PM Quote
Avatar
tasx (Dev Team)
Expert


Messaggi: 439
Iscritto: 15/12/2008

Segnala al moderatore
Postato alle 20:09
Martedė, 07/07/2009
Ciao!!
Non potresti creare un immagine gif animata e poi associarla come icona??

Ciaociao :k::k::k::k:

PM Quote
Avatar
redelux (Normal User)
Newbie


Messaggi: 4
Iscritto: 07/07/2009

Segnala al moderatore
Postato alle 20:22
Martedė, 07/07/2009
Magari!!! Le immagini devono ruotare, al trascinamento del mouse. Di ruotare ruotano, il problema č che non so di quanto aumentare, al variare dell'angolo di rotazione, le dimensioni delle JLabel che le contengono. Attualmente selezionando uno spigolo dell'immagine con il mouse e trascinandolo ottengo la rotazione dell'immagine, ma vengono tagliati gli spigoli in quanto la dimensione del contenitore rimane la stessa. Aiutoooo!!:d

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 13:00
Giovedė, 09/07/2009
potresti scalare l'immagine con la classe AffineTransform per farla stare giusta dentro la label.

PM Quote
Avatar
redelux (Normal User)
Newbie


Messaggi: 4
Iscritto: 07/07/2009

Segnala al moderatore
Postato alle 13:35
Giovedė, 09/07/2009
Grazie a tutti ma alla fine ho risolto cosė:
Codice sorgente - presumibilmente Java

  1. int iw = dimensione.width;
  2.         int ih = dimensione.height;
  3.         double cos = Math.abs(Math.cos(rotazione));
  4.         double sin = Math.abs(Math.sin(rotazione));
  5.         double width  = iw*cos + ih*sin;
  6.         double height = ih*cos + iw*sin;
  7.         double x = (getBounds().width  - iw)/2;
  8.         double y = (getBounds().height - ih)/2;
  9.         at.setToTranslation(x, y);
  10.  
  11.         at.rotate(rotazione, iw/2.0, ih/2.0);
  12.         x = (getBounds().width   - width)/2;
  13.         y = (getBounds().height - height)/2;
  14.         this.setBounds(getBounds().x,getBounds().y,(int)width+1,(int) height+1);


In questo modo il contenitore si adatta esattamente alla dimensione dell'immagine ruotata.

Saluti a tutti e grazie per l'interessamento

PM Quote