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

C++Builder Discussion :

Texte vertical dans un TCanvas


Sujet :

C++Builder

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Par défaut Texte vertical dans un TCanvas
    Bonjour,

    Je cherche à écrire un texte verticalement dans un TCanvas, et je n'ai rien trouvé dans la doc.
    Auriez-vous une idée sur comment faire ca ?

    Merci
    Fred

  2. #2
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut
    Tu peux utiliser les rotations de FONTs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
          LOGFONT lgfont;
         GetObject(Chart_Type1->Canvas->Font->Handle, sizeof(LOGFONT), &lgfont);
         lgfont.lfEscapement=AngleX;
         lgfont.lfOrientation=AngleY;
         lgfont.lfOutPrecision = OUT_TT_ONLY_PRECIS;
         Chart_Type1->Canvas->Font->Handle = CreateFontIndirect(&lgfont);
         SetGraphicsMode(Chart_Type1->Canvas->Handle, GM_ADVANCED);
         Canvas->TextOut(x,y,string);

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Par défaut
    Bonjour,

    Merci pour ta réponse, mais je n'arrive pas à le faire fonctionner correctement. Le texte est tout tordu et pas joli.

  4. #4
    Membre averti

    Inscrit en
    Août 2002
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 24
    Par défaut
    Sinon ya la technique un peu bourin qui consiste à mettre des retours chariots à chaque lettre.

    ... enfin ... c'est une idée comme une autre

    [Edit]
    Oops désolé, j'avais pas vu que tu travaillais sur du TChart. je pensais que c'etait du TStringGrid.
    Pour me ratrapper, je regarde si je trouve pas quelque chose

  5. #5
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    Salut, j'ai recopié tel quel la fonction donnée dans les truc est astuces, en l'adaptant au TChart. Cela me donne 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
     
       Chart1->Canvas->Font->Size = 10;
       Chart1->Canvas->Font->Name = "Arial";
       LOGFONT lgf;
       GetObject(Chart1->Canvas->Font->Handle, sizeof(LOGFONT), &lgf);
       lgf.lfEscapement  = 900;
       lgf.lfOrientation = 900;
       lgf.lfOutPrecision = OUT_TT_ONLY_PRECIS;
       Chart1->Canvas->Font->Handle = CreateFontIndirect(&lgf);
       SetGraphicsMode(Chart1->Canvas->Handle, GM_ADVANCED);
       Chart1->Canvas->Brush->Style = bsClear;   //transparent
       AnsiString text1 = "Légende en Y";
       Chart1->Canvas->TextOut(25,150, text1);
    Chez moi, le texte est affiché correctement. Essaye ce code, si cela ne fonctionne pas, peux tu me décrire comment s'affiche ton texte?

  6. #6
    Membre averti

    Inscrit en
    Août 2002
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 24
    Par défaut
    En fait le code de uriotcea est pas mal du tout je viens de faire un test et ça marche nikel chrome

    Crée un nouveau projet avec juste un Form et tu mets le code suivant dans OnPaint du Form.
    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
     
    void __fastcall TForm1::FormPaint(TObject *Sender)
    {
        AnsiString str = "Texte à 90°";
        LOGFONT lgfont;
     
        if(GetObject(Canvas->Font->Handle, sizeof(LOGFONT), &lgfont))
        {
            lgfont.lfHeight = 20;
            lgfont.lfEscapement = 900;
            lgfont.lfOrientation = 900;
            lgfont.lfOutPrecision = OUT_TT_ONLY_PRECIS;
            Canvas->Font->Handle = CreateFontIndirect(&lgfont);
            SetGraphicsMode(Canvas->Handle, GM_ADVANCED);
            Canvas->TextOut(200, 200, str);
        }
    }
    Il ne te reste plus qu'à jouer avec les différents paramètres du LOGFONT pour voir ce qui te convient le mieux au niveau rendu. Pour plus de detail fait un coup de F1 sur LOGFONT.

    A+

    [EDIT]
    j'ai pas été assez rapide face à bandit boy

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Par défaut
    Salut à tous,

    Merci pour vos aides.
    Ca marche nickel maintenant.
    Je suis content....

    Merci
    Fred

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

Discussions similaires

  1. Rotation d'un texte vertical dans un tableau
    Par Ptite Développeuse dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 25/03/2010, 10h07
  2. Text vertical dans Tkinter canvas text
    Par jcgarreau dans le forum Tkinter
    Réponses: 4
    Dernier message: 15/08/2009, 00h29
  3. [QuickReport]sens du text vertical dans etat portrait
    Par alili mostafa dans le forum QuickReport
    Réponses: 3
    Dernier message: 14/03/2009, 09h12
  4. texte vertical dans un etat ou formulaire
    Par sakia dans le forum VBA Access
    Réponses: 5
    Dernier message: 19/11/2007, 15h49
  5. Texte vertical dans un état Access
    Par mariannesq dans le forum IHM
    Réponses: 3
    Dernier message: 15/01/2007, 17h20

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