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 :

[TexturePaint] Déplacement de formes


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 69
    Par défaut [TexturePaint] Déplacement de formes
    Bonjour,

    J'applique une texture à une forme avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    // création de la texture
    texture_bi = new BufferedImage(50,50,BufferedImage.TYPE_INT_BGR);
    texture_g = texture_bi.createGraphics();
    ImageIcon texture_image = new ImageIcon("images/texture_1.jpg");
    texture_g.drawImage(texture_image.getImage(), 0, 0, this);
    Rectangle2D imageRect = new Rectangle2D.Double(0.0, 0.0, texture_bi.getWidth(), texture_bi.getHeight());
    texture = new TexturePaint(texture_bi, imageRect.getBounds2D());
     
    ....
     
    // application de la texture
    g.setPaint(texture);
    g.fillPolygon(xs, ys, 4);
    Ceci fonctionne parfaitement, mais lorsque la forme se déplace, la texture ne suit pas le mouvement. Plus précisément, la forme donne l'impression de se déplacer sur la texture. Comment faire pour que forme et texture soient visuellement solidaires ?

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu dois déplacer aussi ton imageRect, c'est lui qui précise à quel endroit est accrochée la texture dans le Graphics.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 69
    Par défaut
    Oui, ok, ça règle effectivement le problème pour les translations. Quid en ce qui concerne les rotations de la forme sur elle-même ?

    Je suppose que je dois faire pivoter la BufferedImage de la texture sur elle-même ? J'ai ajouté le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    // rotation
    AffineTransform transform = new AffineTransform();
    transform.rotate(body.getRotation(),body.getPosition().getX(),body.getPosition().getY()); 
    AffineTransformOp op = new AffineTransformOp(transform, AffineTransformOp.TYPE_BILINEAR);
    BufferedImage new_bi = new BufferedImage(50,50,BufferedImage.TYPE_INT_BGR);
    op.filter(texture_bi, new_bi);
     
    // translation
    Rectangle2D imageRect = new Rectangle2D.Double(body.getPosition().getX(), body.getPosition().getY(), 50, 50);
     
    // modification de la texture avec les nouvelles valeurs
    texture = new TexturePaint(new_bi, imageRect.getBounds2D());
    La méthode getPosition() donne le centre du corps et la méthode getRotation() retourne l'angle de rotation en radians.

    L'effet de ce code est que la texture disparait pour laisser place à du noir dès que la forme pivote, par contre la translation en x et y fonctionne.

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu effectue comment les rotations de ta forme?

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 69
    Par défaut
    Ce n'est pas moi qui le fait, j'utilise le moteur physique phys2d

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    au lieu d'une forme, tu peux pas directement lui filer une image? Comme çà plus de texture. Sinon si t'as du noir c'est probablement qu'il manque une translation quelque part.

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/05/2015, 00h21
  2. Réponses: 4
    Dernier message: 09/03/2011, 15h18
  3. Déplacement d'un form transparent (LAYERED)
    Par Darkspace dans le forum Composants VCL
    Réponses: 26
    Dernier message: 03/04/2009, 05h09
  4. Déplacement du Form sans barre
    Par therafou dans le forum VB.NET
    Réponses: 1
    Dernier message: 06/05/2007, 18h00
  5. FORMS 6i - Déplacement entre blocs -
    Par safou dans le forum Forms
    Réponses: 10
    Dernier message: 25/10/2005, 15h40

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