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

2D Java Discussion :

Carré qui tourne


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3
    Par défaut Carré qui tourne
    Salut a tous !
    Je suis sur un problème depuis quelques temps...
    Alors je dois faire un carré qui fait une rotation en fonction d ou est la souris. Je vous mets la partie du code que j ai fais parce que là je rame complétement, si quelqu'un pouvait m'aider ça serait vraiment très gentil

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
     
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import java.awt.image.*;
     
    public class Caree extends JFrame implements MouseMotionListener{
    		private int xPrec, yPrec;
    		private JPanel p;
    		private Image img;
    		private Graphics imgGraph;
     
     
    	public Caree(){
     
    		super("Le rectangle magic");
     
    		p = new JPanel();
    		p.addMouseMotionListener(this);
     
    		img = new BufferedImage(600,600,BufferedImage.TYPE_INT_RGB);
    		imgGraph = img.getGraphics();
     
    		getContentPane().add(p);
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		setSize(600,600);
     
    		setLocationRelativeTo(null);
     
    		setVisible(true);
     
     
     
     
     
     
     
     
     
     
    	}
     
    	public static void main(String[] args){
     
    		new Caree();
    	}
     
    	public void mouseDragged(MouseEvent e){
     
    		Graphics g = getGraphics();
     
    		g.setColor(Color.BLACK);
    		for(int i = 0;i < 100; i++){
    		g.fillRect(i,80,e.getX(),e.getX());
     
     
    		}
    		mouseMoved(e);
    		effacer();
     
    	}
     
    	public void mouseMoved(MouseEvent e){
     
    		xPrec = e.getX();
    		yPrec = e.getY();
     
     
     
     
    	}
     
    	public void effacer(){
     
    		Color c = imgGraph.getColor();
    		imgGraph.setColor(Color.WHITE);
    		imgGraph.fillRect(0,0,img.getWidth(this),img.getHeight(this));
    		imgGraph.setColor(c);
     
     
    		repaint();
     
     
    	}
     
    	public void paintComponent(Graphics g){
    		paintComponent(g);	
     
     
     
    		g.drawImage(img,0,0,this);
    	}
     
     
     
     
     
    }

  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,
    Je ne sais pas si c'est ce que tu cherches, mais ceci marche très bien chez moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import java.awt.image.*;
     
    public class Caree extends JPanel implements MouseMotionListener{
     
      int xPrec, yPrec;
     
      public Caree(){
        addMouseMotionListener(this);
        setPreferredSize(new Dimension(600,600));
      }
     
      public static void main(String[] args){
        JFrame f = new JFrame("Salut");
        f.getContentPane().add(new Caree());
     
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
      }
     
      public void mouseDragged(MouseEvent e) {
        xPrec = e.getX();
        yPrec = e.getY();
        repaint();
      }
     
      public void mouseMoved(MouseEvent e){
        xPrec = e.getX();
        yPrec = e.getY();
        repaint();
      }
     
      public void paintComponent(Graphics gr){
        Graphics2D g = (Graphics2D)gr;
     
        int centerx = (int) getBounds().getCenterX();
        int centery = (int) getBounds().getCenterY();  
        double angle = Math.atan((yPrec - centery) / (double)(xPrec - centerx));
     
        Color c = g.getColor();
        g.setColor(getBackground());
        g.fillRect(centerx - 60, centerx - 60, 120, 120);
     
        // rotation autour du centre du panel
        g.translate(centerx, centery);
        g.rotate(angle);
        g.translate(-centerx, -centery);
     
        g.setColor(Color.BLACK);
        g.drawRect(centerx - 40, centery - 40, 80, 80);
        g.setColor(c);
     
        // rotation inverse
        g.translate(centerx, centery);
        g.rotate(-angle);
        g.translate(-centerx, -centery);
     
        g.setColor(c);  
      }
    }
    "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. AMD athlon 3200+ qui tourne a 1100 mhz au lieu de 2200 mhz
    Par phoenix440 dans le forum Composants
    Réponses: 7
    Dernier message: 09/03/2005, 15h38
  2. [VB6] Un prog. qui tourne en continu en parallèle d'autre appli?
    Par jackazerty dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 14/08/2004, 19h24
  3. Pb de rand() qui tourne en boucle
    Par MadChris dans le forum MFC
    Réponses: 3
    Dernier message: 26/06/2004, 16h24
  4. Réponses: 5
    Dernier message: 25/06/2004, 15h57
  5. Réponses: 19
    Dernier message: 07/11/2003, 08h10

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