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 :

faire la rotation d'un Rectangle2D sans utiliser un bufferedImage


Sujet :

2D Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 46
    Par défaut faire la rotation d'un Rectangle2D sans utiliser un bufferedImage
    Je sais que c'est con.. mais bon
    Bonjour a tous,
    Dans le but ed crée un jeu de plateau(jeu de domino) j'aimerais faire un rotation sur un rectangle. Un rectangle représente une pièce qui contient deux extrémités.
    Dans le principe du jeu il faut :On doit poser les dominos à la suite les uns des autres en les combinant (c'est-à-dire qu'un des côtés du domino posé doit porter le même nombre de points que le domino sur la table). Les doubles sont placés perpendiculairement.
    Je crée 28 rectangles qui représentent les 28 dominos. Mon souci est que une fois crée je n'arrive pas à lé faire pivoter quand le coté b du domino joue est égale au coté b du domino déja joué(c.a.d sur le plateau). Ex : domino déja joué = [2-3] [4-3]= domin joué.

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Quand tu dessine un domino il te suffira de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    On crée un contexte temporaire à partir de graphics du panel dans la méthode paintComponent
    Graphics2D g2d = (Graphics2D) mesGraphics.create();
    g2d.rotate(angle);
    //dessin du domino...
    //finalisation des graphics temporaires
    g2d.dispose();

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 46
    Par défaut
    tu m'excusera Sinok je comprends vite mais il faut m'expliquer longtemps !

    J'ai pas compris exactement ce qu'il faut faire. Je crée une image avec la rotation voulu et je place un context temporaire.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 46
    Par défaut
    Pourquoi ? Graphics2D temp = (Graphics2D) mesGraphics.create();
    puis g2d.rotate(angle); et non tmp.rotate ?

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par défaut
    Faute de frappe.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 46
    Par défaut
    ok mais ça change rien à ma compréhension
    Je vais un contexte graphics à l'aide ma methode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //dans ma classe Rectangle5
    private static rotation=false;
     void dessiner(Graphics g) {
     
        Graphics2D g2 =(Graphics2D) g;
        g2.setPaint(Color.black);
        g2.setStroke(new BasicStroke(2));
        rectangle2d=new Rectangle2D.Double(x,y, 
                largeur,hauteur);
        g2.fill(this.rectangle2d);
    .....
    Puis je crée un contexte temporaire à partir de mon graphique :
    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
     
    //dans ma classe Rectangle5
    void dessiner_temp(Graphics g) {
    Graphics2D temp = (Graphics2D) g.create();
    try{
    temp.rotate(angle);
    temp.setPaint(Color.black);
        temp.setStroke(new BasicStroke(2));
        rectangle2d =new Rectangle2D.Double(x,y, 
                largeur,hauteur);
        temp.fill(this.rectangle2d);
    }
    finally {
            temp.dispose();
          }
    }
    et quand j'invoquerez m'a methode paint dans mon prog principal

    Mais comment faire pour que ce soit un objet qui fasse la rotation et non mon panel ?

    si je fais dans ma methode paint
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //dans ma classe Prog
    public void paint(Graphics g) {
    for(i=0;i<listerectangle.size(),i++)
    rect1=(Rectangle5)listerectangle.get(i);
    if(rect1.rotation=false)
    {rect1.dessiner(g)}
     
    rect1.dessiner_temp(g);
    }

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 46
    Par défaut
    j'ai trouvé, ce n'est pas propre mais ça fonction.

    J'ai crée dans ma class Rectangle5

    quatre methodes :
    1) getA et 2) getB --> renvoit les deux entiers des deux côtés
    3) setA et 4) setB -->modifie les deux entiers des deux côtés

    avec un repaint()
    pas de rotation mais ça fait juste ce don j'ai besoin

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Comment faire sans utiliser macro (Fonction RECHERCHE, INDEX, ETC....)
    Par anonymous9 dans le forum Excel
    Réponses: 7
    Dernier message: 04/02/2014, 15h57
  2. Faire un upload sans utiliser le PHP
    Par JeanMarc_T2k dans le forum Balisage (X)HTML et validation W3C
    Réponses: 13
    Dernier message: 06/02/2008, 09h43
  3. [][Timer] Créer un Timer sans utiliser le composant
    Par HPJ dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 01/10/2003, 11h04
  4. Tore en OpenGL sans utiliser glut
    Par lefort dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 20/11/2002, 16h32

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