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 :

Graphics2D texte à l'envers


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 56
    Par défaut Graphics2D texte à l'envers
    Bonjour à tous,

    Avec "Graphics2D" le repère est en haut à gauche, je le déplace en bas à gauche
    par une échelle négative en y
    Comment puis-je remettre mon texte à l'endroit ??

    code de déplacement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    g2c.translate(margeX,canvas1.getHeight()-(margeY));
    g2c.scale(zoom,-zoom);// echelle 1 en x et -1 en y pour retourner le dessin et mettre l'origine en bas a gauche
    code pour mon texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    FontDessin = font.deriveFont(17/zoom);
    AffineTransform atFont = new AffineTransform();
    atFont.scale(1, -1);
    FontDessin.deriveFont(atFont);
    g2c.setFont(FontDessin);
    g2c.drawString(TexteInfo,(int)Xdeb, (int)Ydeb);
    mon texte ne se retourne pas ?

    Merci pour votre aide,

    DMF

  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
    C'est normal que ça arrive, ton scale produisant une homothécie sur les graphics...

    A partir du moment ou tu appliques ce genre de transformation sur des Graphics, touts les opérations futures seront affectées, or tu a une opération qui met tout à l'envert, donc tout élément dessiné finira à l'envers...

    Donc dans ton cas précis, le plus simple serait d'avoir juste une méthode qui inverse le signe de la composante ordonnées pour tout ce que tu veux dessiner et de ne pas utiliser cette homothécie via scale.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 56
    Par défaut
    Bonjour Sinok,

    Je te remercie de te pencher sur mon cas :-)

    je suis entièrement d'accord avec ce que tu dis mais je n'est pas trouvé de solution plus simple pour inverser les ordonnées.

    "une méthode qui inverse le signe de la composante ordonnées"
    aurais-tu un exemple ?

    Amicalement,
    DMF

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    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 901
    Billets dans le blog
    54
    Par défaut
    Il est parfois plus interressant de travailler sur des Graphics temporaire (le Graphics retourné par Graphics.create()) car :
    • Toutes les transformations affines ne peuvent pas être annulées (voir AffineTransforme.inverse());
    • Compte tenu des limitations dans la précision des doubles et float on accumule parfois des erreurs/offset infinitésimaux qui finissent par être visibles à l'écran (ex: dans le cas d'une longue suite de rotations dans tous les sens).


    Ca donne un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Graphics2D gtmp = (Graphics2D)g.create(...);
    try {
      // Homotétie sur gtmp.
      // pas besoin d'annuler la transfo.
    } finally {
     gtmp.dispose();
    }
    Cependant toutes les implémentations de Graphics peuvent ne pas supporter la création de sous-Graphics.
    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

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 56
    Par défaut
    Bonjour Bouye,

    Merci pour ton aide.

    Je travail uniquement avec des float.

    aurais-tu un exemple de Graphics Temporaire pour voir
    la gestion des différents éléments Graphics au niveau de translate et scale

    Amicalement,

    DMF

  6. #6
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    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 901
    Billets dans le blog
    54
    Par défaut
    Ca marche à l'identique, simplement tu n'a plus a annuler toutes tes transfos à la fin.

    Si tu changes le repère et le clip (la method create() permet de se créer une vue d'une surface plus petite que celle du Graphics d'origine, il va de soit que les dessins en seront translatés d'autant et clippé par le rectangle spécifié en paramètres de la méthode.
    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

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

Discussions similaires

  1. [AC-2010] Lire un fichier texte à l'envers
    Par Mut dans le forum VBA Access
    Réponses: 9
    Dernier message: 12/03/2013, 16h05
  2. Creer d'un texte editable dans un Graphics2D
    Par marinp dans le forum 2D
    Réponses: 6
    Dernier message: 06/05/2010, 11h25
  3. imprimer un texte a l'envers
    Par olibara dans le forum C#
    Réponses: 1
    Dernier message: 22/04/2010, 07h55
  4. [CR XI] Zone de texte à l'envers
    Par superlofo dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 13/03/2009, 08h25

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