Visualizzazione dei risultati da 1 a 6 su 6

Discussione: ruotare un immagine

  1. #1

    ruotare un immagine

    Ciao a tutti , per posizionare un immagine in una Jlabel ho utilizzato questo codice :

    public ImageIcon angolo_destro_basso(Image src){
    int w = lbl_alto_s.getWidth();
    int h = lbl_alto_s.getHeight();
    int type = BufferedImage.TYPE_INT_RGB;
    BufferedImage dst = new BufferedImage(w, h, type);
    Graphics2D g2 = dst.createGraphics();
    g2.drawImage(src, 0, 0, w, h, this);
    g2.dispose();
    return new ImageIcon(dst);
    }

    ora come faccio a ruotarla?
    Mi spiegate come funziona il metodoto rotate o mi mandate qualche esempio per il mio codice ? Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: ruotare un immagine

    Originariamente inviato da kerbero1984
    ora come faccio a ruotarla?
    Mi spiegate come funziona il metodoto rotate o mi mandate qualche esempio per il mio codice ?
    Il problema non è tanto capire il rotate(double theta) in sé, che mi pare banale: si passa un angolo in radianti. La vera questione è capire il ruotare rispetto a cosa.
    L'angolo di rotazione lo imponi tu fisso ed è un multiplo di 90 gradi?

    Il Graphics2D ha inizialmente l'origine (0,0) in alto a sinistra (quindi l'angolo in alto/sinistra del BufferedImage da cui lo ottieni).
    Se applichi un rotate(...) al Graphics2D senza fare alcuna traslazione prima, esso ruota gli assi cartesiani che hanno origine in alto/sinistra. Se poi disegni qualcosa la immagine va di sicuro "fuori" dal BufferedImage (in parte o completamente ... dipende dall'angolo).

    Quindi devi "giocare" su una traslazione e una rotazione. Poi la traslazione potresti anche farla passando valori opportuni al drawImage invece che 0,0.

    Prima comunque spiega cosa vuoi ottenere.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    ti ringrazio per la risposta ho risolto mezo problema di fatti con la chiamata

    g2.rotate(Math.PI,w/2,h/2);

    riesco a fare alcuni tipi di rotazioni ma ammettendo che ho un piccola immagine all'inzio della label (un mattoncino) e sotto tutto bianco come faccio a ruotarla in maniera che il mattoncino risulto sotto e il bianco sopra ? grazie

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da kerbero1984
    g2.rotate(Math.PI,w/2,h/2);
    Occhio che questa versione di rotate non fa solo quello che pensi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    ? come ?
    non c'è un modo per spostare l'asse di rotazione sulle z?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da kerbero1984
    ? come ?
    non c'è un modo per spostare l'asse di rotazione sulle z?
    che vuol dire "z" .... mica è un sistema tridimensionale!

    Quella versione che hai detto prima fa un translate+rotate+translate (vedi javadoc). Non ho mai capito bene nemmeno io a cosa possa servire.

    Ti basta solo "giocare" su un translate() + rotate() oppure solo sul rotate() e il drawImage() con coordinate opportune.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.