|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
[java] frecce di resize
Ciao, sto creando un piccolo editor di immagini. Quello che vorrei riuscire a fare è questo: ogni volta che seleziono un oggetto (rettangolo, cerchio...ecc) mi dovrebbero spuntare le frecce, che permettono di ridimensionare l'oggetto ,attorno all'oggetto stesso...come in questo esempio (fatto con inkscape):
![]()
Ultima modifica di pumppkin : 06-12-2006 alle 10:36. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Le frecce possono essere immagini con lo sfondo trasparente. Quando selezioni una figura applichi (in primo piano) le sei immagini delle frecce usando come punto di riferimento l'area rettangolare che contiene la figura selezionata (shape.getBounds())
Per ridimensionare usando quelle frecce, quando viene premuto il mouse verifichi se il punto di pressione appartiene all'area di una delle frecce presenti sullo schermo. In caso affermativo, determini l'asse o gli assi di trascinamento e la figura a cui applicare la trasformazione verificando quale figura sia collegata a quella freccia. |
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
Quote:
Ultima modifica di pumppkin : 06-12-2006 alle 13:30. |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Probabilmente è meglio usare delle immagini con un bit di trasparenza (alla GIF per intenderci) casomai la freccia dovesse apparire su un sfondo non bianco.
Il posizionamento è una questione di geometria che si risolve con carta e penna. Supponendo che l'immagine della freccia che punta a sinistra abbia dimensioni (aw, ah) e che la regione che contiene la figura selezionata sia un rettangolo di dimensioni (rw, rh) e posizione (rx, ry), le coordinate del punto in cui disegnare l'immagine della freccia saranno: ax = (rx - aw); ay = ((ry + rh) / 2) - (ah / 2); Per la freccia che punta a nordovest saranno: ax = (rx - aw); ay = (ry - ah); e via dicendo. |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
scusami se ti disturbo così tanto ma ancora sono un pochino inesperto...come faccio ad applicare l'immagine della freccia alla shape?
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Nessun disturbo.
La grafica computerizzata è come la magia: c'è sempre il trucco. A un certo punto arrivi a disegnare le tue figure sullo schermo cosa che, in Java, significa che hai un Graphics2D col quale invochi le opportune istruzioni di proiezione. Con quel Graphics2D puoi disegnare anche immagini. Molto semplicemente, dopo aver disegnato le figure geometriche se hai una figura selezionata determini la regione rettangolare in cui la figura è contenuta e usi i dati di quel rettangolo per proiettare le frecce. In pseudo codice: Codice:
public void paintComponent(Graphics g) {
...disegna lo sfondo
...disegna le figure
se esiste una selezione
rectangle r = regione che contiene la figura selezionata
disegna le sei frecce lungo i lati di r
1. c'è una selezione 2. la selezione interessa la figura ABC 3. repaint L'utente compie un'operazione che annulla la selezione (tipicamente clicca su uno strumento diverso dal selettore o seleziona una regione vuota), allora: 1. c'è una selezione = false 2. repaint |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:26.





















