Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Come fare per specificare lunghezza e altezza di un'immagine?

    Come da titolo. In un'applet c'è Image, ma vedo che non funziona anche in un'applicazione normale... cosa dovrei usare? Dovrei disegnare un'immagine che ha proprie dimensioni, e con un metodo scegliere indipendentemente per quanto deve estendersi...

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

    Re: Come fare per specificare lunghezza e altezza di un'immagine?

    Originariamente inviato da Dreamer89
    Come da titolo. In un'applet c'è Image, ma vedo che non funziona anche in un'applicazione normale... cosa dovrei usare? Dovrei disegnare un'immagine che ha proprie dimensioni, e con un metodo scegliere indipendentemente per quanto deve estendersi...
    Ci sono diverse soluzioni. Una è quella di ridimensionare prima di tutto la immagine (vedi getScaledInstance() di Image) e poi disegnarla ogni volta che serve così com'è cioè appunto già scalata. Questo ha il vantaggio che la immagine puoi metterla anche solo in un ImageIcon su un componente es. JLabel o altro.

    Se invece disegni tu la immagine direttamente su un Graphics, puoi sia disegnarla avendola già scalata come ho detto prima ma puoi anche scalarla "al volo", mentre la disegna. In tal caso usa il metodo drawImage() che riceve width/height.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Re: Re: Come fare per specificare lunghezza e altezza di un'immagine?

    Originariamente inviato da andbin
    Ci sono diverse soluzioni. Una è quella di ridimensionare prima di tutto la immagine (vedi getScaledInstance() di Image) e poi disegnarla ogni volta che serve così com'è cioè appunto già scalata. Questo ha il vantaggio che la immagine puoi metterla anche solo in un ImageIcon su un componente es. JLabel o altro.

    Se invece disegni tu la immagine direttamente su un Graphics, puoi sia disegnarla avendola già scalata come ho detto prima ma puoi anche scalarla "al volo", mentre la disegna. In tal caso usa il metodo drawImage() che riceve width/height.
    Sì ma Image funziona in un'applet, non in un'applicazione normale (o almeno per quanto abbia provato)... a me servirebbe per un'applicazione senza applet, altrimenti alcuni metodi di Image non mi funzionano.

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

    Re: Re: Re: Come fare per specificare lunghezza e altezza di un'immagine?

    Originariamente inviato da Dreamer89
    Sì ma Image funziona in un'applet, non in un'applicazione normale (o almeno per quanto abbia provato)... a me servirebbe per un'applicazione senza applet, altrimenti alcuni metodi di Image non mi funzionano.
    Ma non centra nulla applet o applicazione! Sei riuscito in qualche modo a caricare una immagine e ora hai un Image? Bene, allora o la scali prima e poi disegni quella già scalata, o la disegni scalandola "al volo" mentre disegna.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Allora, ho utilizzato gli stessi procedimenti che ho usato per un'applet e lì mi funzionano, ma se uso Image in un'applicazione normale, mi da errore qui: image = getImage (getDocumentBase(), string);

    codice:
    import java.awt.Image;
    import java.awt.Graphics;
    import java.awt.Dimension;
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JFrame;
    import javax.swing.JFileChooser;
    import javax.swing.JButton;
    
    public class Zoom extends JPanel
    {
    	private JButton pic;
    	private JButton moreZoom;
    	private JButton lessZoom;
    	private Image image;
    	private static JPanel controlPanel;
    	private static JScrollPane scroll;
    	
    	public Zoom()
    	{
    		pic = new JButton ("Choose a pic");
    		moreZoom = new JButton ("+");
    		lessZoom = new JButton ("-");
    		
    		ButtonHandler handler = new ButtonHandler();
    		pic.addActionListener (handler);
    		moreZoom.addActionListener (handler);
    		lessZoom.addActionListener (handler);
    		
    		controlPanel = new JPanel();
    		controlPanel.add (pic);
    		controlPanel.add (moreZoom);
    		controlPanel.add (lessZoom);
    		
    		setPreferredSize (new Dimension (0, 0));
    	}
    
    	private class ButtonHandler implements ActionListener
    	{
    		public void actionPerformed (ActionEvent event)
    		{
    			if (event.getSource() == pic)
    			{
    				JFileChooser fileChooser = new JFileChooser();
    				int result = fileChooser.showOpenDialog (Zoom.this);
    				
    				if (result == JFileChooser.APPROVE_OPTION)
    				{
    					String string = fileChooser.getSelectedFile().getPath();
    					
    					if (string != null)
    					{
    						image = getImage (getDocumentBase(), string);
    						setPreferredSize (new Dimension (getWidth(), getHeight()));
    						scroll.updateUI();
    						repaint();
    					}
    				}
    			}
    		}
    	}
    	
    	public void paintComponent (Graphics g)
    	{
    		super.paintComponent (g);
    		
    		if (image != null)
    			g.drawImage (image, 0, 0, 300, 300, this);
    	}
    	
    	public static void main (String[] args)
    	{
    		scroll = new JScrollPane(new Zoom());
    		
    		JFrame frame = new JFrame ("Zoom");
    		frame.setSize (640, 480);
    		frame.setLocationRelativeTo (null);
    		frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
    		
    		frame.add (controlPanel, BorderLayout.NORTH);		
    		frame.add (scroll);
    		
    		frame.setVisible (true);
    	}
    }

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Dreamer89
    Allora, ho utilizzato gli stessi procedimenti che ho usato per un'applet e lì mi funzionano, ma se uso Image in un'applicazione normale, mi da errore qui: image = getImage (getDocumentBase(), string);
    Ma ovvio! ..... nelle applicazioni non esiste un "document base" e nemmeno un "code base". Quei metodi getDocumentBase() e getCodeBase() sono solo per le applet (infatti sono di Applet ...).

    E quel getImage() lo stai invocando come se fosse di JPanel ... ma non c'è un getImage!! Esiste un getImage() di java.awt.Toolkit ma richiede comunque un URL o nome di file.

    Visto che hai usato JFileChooser, lui ti fornisce un java.io.File. Usa la read() di javax.imageio.ImageIO per caricare la immagine ... che fai 10 volte prima ..
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Grazie mille, così va tutto bene! Ma c'è un modo per velocizzare lo spostamento di una scrollbar quando uso la rotellina del mouse?

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Dreamer89
    Ma c'è un modo per velocizzare lo spostamento di una scrollbar quando uso la rotellina del mouse?
    Cosa intendi??? Se non sbaglio, è configurabile nel sistema (almeno per Windows) la "reattività" all'uso della rotellina del mouse.
    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.