faire un zoom en java!!

faire un zoom en java!! - Programmation

Marsh Posté le 31-05-2002 à 16:03:36    

comment fait'on un zoom en java?
pour un programme pas en java scipt
merci

Reply

Marsh Posté le 31-05-2002 à 16:03:36   

Reply

Marsh Posté le 31-05-2002 à 16:09:23    

il faudrait peut être décrire un poil plus précisément ce que tu veut.

Reply

Marsh Posté le 31-05-2002 à 16:16:20    

ben je croyais etre assez precis mais bon!!
 
en fait je voudrai pourvoir zoomer sur une fenetre apres avoir cliqué sur bouton_zoom_plus(ou_mois) et que des scrollbar apparaiseent si necessaire!
 
voila j'espere avoir etais plus precis.
 
merci
si vous avez differnetes techniques ca m'interrese
ex: zoom sur un rectangle créée par glissement de souris.

Reply

Marsh Posté le 31-05-2002 à 16:23:22    

Si ton image est une bufferedImage, tu peux placer ça dans la méthode paintComponent() du composant qui contient l'image :
 

Code :
  1. public void paintComponent (Graphics g) {
  2.     Graphics2D g2 = (Graphics2D) g;
  3.     super.paintComponent(g2);
  4.     if (imageCourante != null) {
  5.         if (facteurZoom != 1.0f) {
  6.             AffineTransform transformationZoom = AffineTransform.getScaleInstance(facteurZoom, facteurZoom);
  7.             g2.drawImage(imageCourante, transformationZoom, this);
  8.         } else {
  9.             g2.drawImage(imageCourante, 0, 0, this);
  10.         }
  11.     }
  12. }


 
Avec :
 - facteurZoom un flottant ( 1.0 -> échelle 1:1, 2.0 -> taille double, etc...)
 - imageCourante, ton image en bufferedImage
 
Ensuite il suffit de faire changer facteurZoom avec JSlider ou autre élément graphique.

 

[jfdsdjhfuetppo]--Message édité par gm_superstar le 31-05-2002 à 16:23:59--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 31-05-2002 à 16:27:12    

tertulia a écrit a écrit :

ex: zoom sur un rectangle créée par glissement de souris.



 
Ca par contre c'est plus difficile à faire : tu dois déduire le facteur de zoom de la taille de ton rectangle de sélection par rapport à la taille de l'image, zoomer, et positionner correctement l'image.

Reply

Marsh Posté le 31-05-2002 à 16:32:02    

ben en fait cette methode (rectangle m'interesse plus)
avec des mouseEvent (click release) qui detecte la position de la souris
et qui zoom du point superieur gauche (click) au point inferieur driot (release)
 
voila donc si t'as des id  
merci

Reply

Marsh Posté le 31-05-2002 à 17:27:03    

Ben que veux tu savoir de plus ?
 
Voilà quelques pistes à explorer (on suppose que l'image s'affiche dans un JPanel) :
 
Tu associes à ce Jpanel une classe qui gère les évenements souris. Elle peut ressembler à ça :

Code :
  1. class MonListener extends MouseInputAdapter {
  2.     public void mousePressed(MouseEvent e) {debutSélection(e.getX(), e.getY());}
  3.    
  4.     public void mouseDragged(MouseEvent e) {agrandirSélection(e.getX(), e.getY());}
  5.    
  6.     public void mouseReleased(MouseEvent e) {fixerSélection(e.getX(), e.getY());}
  7. }


 
- debutSélection : te sers à initialiser tes variables qui vont délimiter le rectangle de sélection.
- agrandirSélection : gérer cet évenement est optionnel, c'est au cas où tu voudrais dessiner un rectangle en pointillés pour matérialiser ta sélection quand tu déplace la souris.
- fixerSélection : fixe les variables du rectangle de sélection ; calcule le facteur de zoom en effectuant le rapport entre la taille de ce rectangle et la taille de l'image ; appelle repaint().
 
Ensuite repaint() appelle la méthode paintComponent(g) que j'ai redéfinie en haut et qui va se charger d'effectuer le zoom. Il faudra sans doute rajouter quelques instructions pour positionner le coin gauche supérieur de l'image zoomée avec le coin gauche supérieur du JPanel.
 
Après à toi d'ajouter tout ce qui manque, mais le principe est là.

 

[jfdsdjhfuetppo]--Message édité par gm_superstar le 31-05-2002 à 17:28:15--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 31-05-2002 à 17:37:55    

merci bien je vais essayer ca

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed