IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

zoom - effets sur JScrollPane et sur BufferedImage


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 16
    Par défaut zoom - effets sur JScrollPane et sur BufferedImage
    Bonjour,
    J'ai défini un JScrollPane sur un panel.
    Ce panel comprend un autre panel sur lequel est affiché une BufferedImage.
    J'effectue des zoom/dézoom sur cette image.
    Le problème est que les scroll bar ne changent pas de taille lorsque je zoome. En effet, on ne peu consulter que la partie de l'image affichée en zoom(et donc on ne peu se déplacer sur le reste de l'image.

    Ce problème n'est pas du au zoom (car en agrandissant la fenêtre on voit toute l'image) mais bien au JScrollPane.
    J'ai essayé de mettre le viewport sur l'image mais bien sur c'est incompatible...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    c = getContentPane();
    JPanel panel = new PanelMap(this.bassin);
    JPanel panel2 = new JPanel();
    panel2.setLayout(new BorderLayout());
    panel2.add(panel,BorderLayout.NORTH);
    c.add(panel2);
    JScrollPane scrollPane = new JScrollPane();
    scrollPane.getViewport().add( panel2 );
    c.add(scrollPane);
    mettre le view port sur panel ne marche pas non plus.



    Avez vous des idées s'il vous plait?



    Autre problème :

    J'utilise une superposition d'images.
    Une image vide de type bufferedImage sur laquelle j'effectue des modifications graphiques (setRGB()) et une contenant une image invoquée.
    En utilisant le fameu zoom, l'image invoquée se modifie bien, cependant la buffered image ne chnage pas de taille.
    J'ai essayé plusieurs solutions ...
    Je voudrais savoir si il était possible de supprimer cette image afin d'en afficher une autre à la place?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    			try 
    			{
    				sourceImage = ImageIO.read(new File("./"+bassin+".jpg"));
    				sourceImageWidth = (sourceImage.getWidth())*coef;
    				sourceImageHeight = (sourceImage.getHeight())*coef;
    				addMouseWheelListener(this);
    				img = new BufferedImage(sourceImageWidth, sourceImageHeight, BufferedImage.TYPE_INT_ARGB);
    			}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    		public void paint(Graphics g) 
    		{
    			int width = (int)(sourceImageWidth*zoom);
    			int height = (int)(sourceImageHeight*zoom);
    			Image img2 = sourceImage.getScaledInstance(width, height, Image.SCALE_SMOOTH);
    			g.drawImage(img2,0,0,null);
    			g.drawImage(img, 0, 0, null);
    		}


    En vous remerciant par avance

  2. #2
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Bonjour,

    pour la première question, il faut appeler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scrollpane.setViewportView(panel2);
    au lieu de getViewport().add.

    Pour la deuxième question, je n'ai pas très bien compris ce que tu cherches à faire, mais voici deux remarques :
    - pour afficher l'image avec un zoom, il est plus rapide de faire ceci (plutôt que de créer une autre image) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void paint(Graphics g) {
      Graphics2D g2 = (Graphics2D)g;
      g2.scale(zoom, zoom);
      g2.drawImage(sourceImage, 0, 0, null);
      g2.scale(1.0/zoom, 1.0/zoom);
      ...
    - l'image img est vide, elle ne contient rien. La dessiner n'aura aucun effet (du moins je crois fortement).
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

Discussions similaires

  1. afficher sur JScrollPane
    Par ulysse031 dans le forum AWT/Swing
    Réponses: 12
    Dernier message: 13/04/2007, 14h58
  2. Réponses: 3
    Dernier message: 20/03/2007, 10h32
  3. Réponses: 3
    Dernier message: 16/02/2007, 12h35
  4. Réponses: 1
    Dernier message: 14/12/2006, 22h47
  5. Action sur JscrollPane
    Par arsenik7 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 16/08/2006, 16h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo