PDA

View Full Version : [java] Ruotare un poligono


Darksoul84
01-09-2007, 17:04
Salve ho un problema a svolgere un esercizio questo è il testo:

1. Gestione della GUI
a) Lo studente implementi una interfaccia utente di tipo JFrame secondo le specifiche riportate di seguito (punti
18):
• nel JFrame è presente una barra dei menù con la voce “immagine”, contenente gli item “carica” ed “elabora”
• il JFrame ha un layout di tipo BorderLayout
• nel JFrame sono presenti quattro pannelli nel seguito indicati con i nomi pannelloA, pannelloB, pannelloC e
pannelloD (di dimensioni a piacere), disposti a piacere
• il pannelloA ha un layout di tipo FlowLayout
• il pannelloA contiene tre JButton nel seguito indicati con i nomi “pannelloB”, “pannelloC” e “Entrambi”
2. Grafica e gestione degli eventi
a) nel pannelloB appare, centrato, un trapezio rettangolo vuoto e di colore verde, le dimensioni sono a piacere, nel
pannelloC appare, posizionata a piacere, una stella a sette punte piena e di colore rosso, le dimensioni sono a
piacere (punti 6)
b) ad ogni pressione dei JButton le figure nei corrispondenti pannelli devono ruotare su se stesse per 3 volte e poi
fermarsi (il tempo di rotazione è a piacere), ad ogni pressione dei JButton i corrispondenti pannelli devono
cambiare colore in maniera random finché le figure non hanno finito di ruotare (il tempo di cambiamento deve
molto minore del tempo di rotazione) (punti 6)


sono riuscito a fare quasi tutto tranne il punto 2B.

Qualcuno potrebbe essere così gentile da darmi una mano a risolverlo nn riesco a far girare questi maledetti poligoni richiesti!!

Darksoul84
02-09-2007, 17:05
almeno mi spiegate come gestire 2 timer?

PGI-Bis
02-09-2007, 19:42
Puoi applicare la rotazione in due modi. Quello più sensato è trasformare i punti del poligono in modo tale che la loro posizione cambi in conseguenza di una rotazione attorno al baricentro. Quello meno sensato ma più performante è sfruttare l'API Java 2D: non cambi i punti del poligono ma gli attributi di trasformazione del contesto grafico. In sintesi:

graphics.rotate(angolo, baricentro);
graphics.paint(il poligono);
graphics.rotate(-angolo, baricentro);

Quanto alla gestione di più javax.swing.Timer... be', un Timer ha un metodo start e uno stop, li gestisci con quelli.

Darksoul84
04-09-2007, 11:09
per ruotare ho trovato migliore l'affineTransform.
Cmq grazie ho risolto tutto

:D :D :D :D