Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    13

    Adattare imaggine al pannello

    Dovrei riuscire a fare in modo che l'immagine di sfondo occupi tutta la superfice disponibile del mio pannello e che si adatti al variare di esse in quanto il pannello é contenuto in una griglia alla quale dovró poi aggiungere altri componenti.
    Spero di essere riuscito a spiegare il problema perché non so da che parte cominciare e quindi non ho codice da postare.

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

    Re: Adattare imaggine al pannello

    Originariamente inviato da cozza.89
    Dovrei riuscire a fare in modo che l'immagine di sfondo occupi tutta la superfice disponibile del mio pannello e che si adatti al variare di esse in quanto il pannello é contenuto in una griglia alla quale dovró poi aggiungere altri componenti.
    Innanzitutto 2 cose: intendi JPanel? intendi "ripetere" la immagine lungo la superficie ("tile") o fare lo "stretching" della immagine sulla dimensione del pannello (anche non mantenendo lo stesso rapporto x/y)?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    13
    Vado a spiegare meglio. Il codice della mia classe é questo
    codice:
    import javax.swing.*;
    import java.awt.*;
    
    public class ImagePanel extends JPanel
    {
        private Image im1;
    
      public ImagePanel()
       {
         //aggiungo immagine
         Toolkit t= Toolkit.getDefaultToolkit();
         im1 = t.getImage("prova.jpg");
         
         MediaTracker m1= new MediaTracker(this);
         m1.addImage(im1, 1);
         try
    	 {
    		 m1.waitForAll();
    	 }
    	 catch (InterruptedException e)
    	 {
    	 } 
       } 
      
    
      public void paintComponent (Graphics g)
      {
    	super.paintComponent(g);
    	g.drawImage(im1, 0, 0,null); 
      }
    }
    Ecco, adesso l'immagine viene disegnata a partire dalle cordinate x=0 e y=0 con le sue dimensioni predefinite. Io vorrei che le dimensioni dell'immagine diventassero quelle del "ImagePanel" ovunque io lo vada a posizionare (nel mio caso in una cella di un GridBagLayout). Mi basta fare uno "stretching" e quindi non mantenere le proporzioni.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da cozza.89
    Io vorrei che le dimensioni dell'immagine diventassero quelle del "ImagePanel" ovunque io lo vada a posizionare (nel mio caso in una cella di un GridBagLayout). Mi basta fare uno "stretching" e quindi non mantenere le proporzioni.
    Benissimo, hai (almeno) 2 possibilità:

    1) Usi la variante di drawImage che ha width/height e si occupa lui dello "stretching" che esegue "al volo" mentre disegna (ma così lo fa ad ogni paintComponent).

    2) Usi una immagine "cachata": se non c'è (ancora) immagine cachata o la sua dimensione è diversa dal pannello, crei una immagine, che tieni da parte, usando getScaledInstance() di Image. Utile se vuoi guadagnare in performance o se vuoi specificare il flag di "hints" per l'algoritmo di resampling.
    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.