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

AWT/Swing Java Discussion :

[graphique]texte parallele a une ligne


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 19
    Par défaut [graphique]texte parallele a une ligne
    bonjour,
    Je souhaiterais afficher un texte de maniere a ce qu'il soit parallele à segment de droite donnée, sachant que je connais les coordonnées des deux etremités de ce segment. Je voudrais aussi que le texte soit centré sur le milieu du segment.
    Il y a t'il une methode simple pour faire cela ou faut t il que je le fasse a la main?
    Merci par avance!

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 911
    Billets dans le blog
    54
    Par défaut
    La facon generale de faire en 2D peut se resumer par le motif "pourquoi faire simple quand on peut faire compliquer ?". Ainsi donc si l'on connait la maniere de dessiner un texte a l'horizontale on peut alors facilement dessiner un texte (simple sans retour a la ligne ni variation de polices et de style) dans toutes les orientations avec des rotations appropriees (soit via les primitives de la classe Graphics, soit via la classe AffineTransform).

    La methode revient alors a faire :

    - calculer l'angle entre le segment (A(x1, y1)->B(x2, y2)) et l'axe X.
    - faire une translation du repere sur le 1ere point du segment.
    - faire une rotation de l'angle precedement cacule.
    - dessiner la chaine a l'endroit approprie en fonction des extremites (A' (0, 0)->B'(x2', 0)). x2' peut se calculer facilement avec la classse AffineTransform .

    Suivant ce qu'on veut faire, l'endroit approprie (x, y) ou dessiner la chaine depend ensuite de plusieurs facteurs/valeurs qu'on peut recuperer avec les classes Font, LineMetrics et/ou Rectangle2D :
    - l'ascent (hauteur entre le haut de la chaine et la ligne/baselinesur laquelle sont poses les characteres).
    - le descent (hauteur entre la baseline et le point le plus bas de la chaine).
    - la largeur de la chaine de characteres a rendre
    Note : ces valeurs peuvent varier en fonction des indices de rendu actuels (RenderingHints.KEY_TEXT_ANTIALIASING par exemple).

    - faire la rotation inverse
    - faire la translation inverse.
    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

  3. #3
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 19
    Par défaut
    merci, ca marche bien!
    Il y a juste que je n'ai pas trouvé comment recuperer la largeur de la chaine de caractere a rendre, et cela me pose des probleme pour centrer le texte sur la ligne.

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 911
    Billets dans le blog
    54
    Par défaut
    Tu as Font.getStringBounds() mais ce n'est pas super precis. Tu peux aussi utiliser un TextLayout.

    Si, au lieu d'utiliser drawString(), tu fais du rendu charactère par charactère* il faut voir du coté de GlyphVector et co pour avoir la Shape (et donc les dimensions) de chacun des glyphes.


    * Ca permet de faire des effets interessant comme orienter chaque charactere avec un angle différent. Ou de remplir l'intérieur et de dessiner le trait de la chaine avec des Paint différents et appliquer des Stroke également (tout ce qu'on peut faire avec n'importe quelle autre Shape quoi).
    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
    Inscrit en
    Mars 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 19
    Par défaut
    ok merci, je vais regarder tout ca!

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/04/2013, 17h36
  2. Lire fichier texte à partir d'une ligne spécifique
    Par Msxty dans le forum VBScript
    Réponses: 7
    Dernier message: 15/07/2011, 15h42
  3. Réponses: 0
    Dernier message: 09/06/2011, 15h50
  4. [HTML][DEBUTANT] centrer une ligne de texte.
    Par heider dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 20/11/2005, 16h15
  5. Réponses: 4
    Dernier message: 24/09/2005, 09h52

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