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

Windows Discussion :

Dessiner du texte avec un certain angle


Sujet :

Windows

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 183
    Points : 38
    Points
    38
    Par défaut Dessiner du texte avec un certain angle
    Bonjour,

    Je fais un programme en Win APi.
    Dans une Boite de Dialogue je crée un diagramme de type histogramme.

    j'aimerais avoir sur mon axe des X, du texte qui s'affiche avec un certain angle, comme on peut le faire pour des diagrammes sous excel.

    Je lis le texte dans un .txt, et je le "dessine":
    Ne faites pas attention au positionnement pour l'instant il est la juste pour tester si le texte s'affiche.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ifstream ReadFile(szCmd4,ios::in);
    k=40;
    while(!ReadFile.eof())
    {
    
    char Sig[20]; std::stringstream Signal; ReadFile >> Sig; Signal << Sig; TextOut(hdc,k,600+k, Sig,7); k++;
    ReadFile.close();

    Bien sur sur la msdn j'ai trouvé un exemple.. mais il est question de GDI... dejà vu ce nom qq part mais pas plus...

    Comment faire pour avoir mon texte avec un certain angle?

    Merci d'avance!!

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    J'ai vu un truc qui ressemble à ça dans ExtTextOut(), mais ce n'est pas un angle...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 183
    Points : 38
    Points
    38
    Par défaut
    erf pas grave j'ai résolu mon probleme autrement:

    Merci quand meme.

    je repasse bien par là t'embeter encore

  4. #4
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 183
    Points : 38
    Points
    38
    Par défaut
    erf et bien finalement j'ai besoin d'ecrire du texte non-hotizontalement....

    que faire?

  5. #5
    Membre averti Avatar de pascal.barbier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2007
    Messages : 362
    Points : 442
    Points
    442
    Par défaut
    Pour cela il faut créer une font en modifiant les paramètres lfEscapment et lfOrientation :
    Ecrire du texte avec un angle
    www.iristechnologies.eu
    Centre de formation à Paris et Toulouse

  6. #6
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 183
    Points : 38
    Points
    38
    Par défaut
    Oui j'avais vu cet exemple mais il me semblais que ca ne marchait pas, enfin j'entend par la que certaines fonctions ne sont pas reconnues...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error C3861: 'StringCchCopy': identifier not found, even with argument-dependent lookup

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Ces fonctions sont déclarées dans <strsafe.h>, à moins que tu n'aies Visual 6 avec un trop vieux SDK.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 190
    Points : 179
    Points
    179
    Par défaut
    Bonjour,

    Si cela peut aider, personnelement j'utilise cette méthode:

    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
    18
    19
    20
    21
    22
    23
    24
    25
    void AngleTextOut(HDC DC, int Angle, int X, int Y, char *Str){
      TLogFont lf;
      HFONT newFont, oldFont;
      memset(&lf,0,sizeof(lf));
      lf.lfHeight=13;
      lf.lfWidth=0;
      strcpy(lf.lfFaceName,"Tahoma");
      lf.lfEscapement = Angle*10;
      lf.lfItalic = 0;
      lf.lfStrikeOut = 0;
      lf.lfUnderline =0;
      lf.lfWeight =0;
      lf.lfOrientation = lf.lfEscapement;
      lf.lfPitchAndFamily = FIXED_PITCH | FF_DONTCARE;
      lf.lfOutPrecision = OUT_TT_PRECIS;
      lf.lfQuality = PROOF_QUALITY;
    
      newFont = CreateFontIndirect(&lf);
      oldFont = SelectObject(DC, newFont);
      SetBkMode(DC, TRANSPARENT);
      TextOut(DC,X,Y,Str,StrLen(Str));
      SelectObject(DC, oldFont);
      DeleteObject(newFont);
    }
    Le but est effectivement de créer sa font et de l'orienter.

    Benjamin

    [EDIT]
    Pardon, j'ai voulu faire vite tout à l'heure en faisant un simple copié collé
    C'est corrigé

  9. #9
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 183
    Points : 38
    Points
    38
    Par défaut
    euh tu écris en C là?

    t_int c'est quoi ?

  10. #10
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    C'est du C++, pour Borland.
    Mais ça doit être facile à adapter...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 183
    Points : 38
    Points
    38
    Par défaut
    oui si on connait Borland, non mais j'ai reussit a l'adapter ehehe Medinoc m'a transmis de son intelligence informatique
    Juste un probleme pour ecrire ce qui suit sans que ca soit en biais,

    et probleme avec Oldfont...

  12. #12
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 183
    Points : 38
    Points
    38
    Par défaut
    Donc en C++ pour mon prog ca me donne:

    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
    18
    19
    20
    21
    22
    23
    24
    25
    void AngleTextOut(HDC hdc,int Angle,int X, int Y, char const *Str)
    {
      LOGFONT lf;
      HFONT newFont;
      memset(&lf,0,sizeof(lf));
      lf.lfHeight=13;
      lf.lfWidth=0;
      strcpy(lf.lfFaceName,"Tahoma");
      lf.lfEscapement = Angle*10;
      lf.lfItalic = 0;
      lf.lfStrikeOut = 0;
      lf.lfUnderline =0;
      lf.lfWeight =0;
      lf.lfOrientation = lf.lfEscapement;
      lf.lfPitchAndFamily = FIXED_PITCH | FF_DONTCARE;
      lf.lfOutPrecision = OUT_TT_PRECIS;
      lf.lfQuality = PROOF_QUALITY;
    
      newFont = CreateFontIndirect(&lf);
      SelectObject(hdc, newFont);
      SetBkMode(hdc, TRANSPARENT);
      TextOut(hdc,X,Y,Str,strlen(Str));
      DeleteObject(newFont);
    }
    et je l'insere dans mon autre fonction avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    std::stringstream TempsTexte ;
    		TempsTexte.precision(4);
    		
    		TempsTexte<< Temps;
    		
    		AngleTextOut(hdc,45,15+Trait_graph*25, 680, TempsTexte.str().c_str());
    Mon soucis reste comment annuler ca pour la suite? Pour l'instant je mets un angle 0..

  13. #13
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Il manque le second SelectObject() dans la fonction, comme avant...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 190
    Points : 179
    Points
    179
    Par défaut
    Re,

    Concernant t_int, il ne s'agit que d'une redéfinition de type.
    En fait je ne travaille pas que sur C++ Builder, mais aussi sur Delphi.
    Le fait de rédéfinir les types nous permets de travailler avec les mêmes types, que ce soit en C++ ou en Pascal.

    Il fallait, comme tu l'as fait, le changer 'en int'.

    Mon soucis reste comment annuler ca pour la suite? Pour l'instant je mets un angle 0..
    Je ne comprends pas la question.

    Cordialement,

    Benjamin

  15. #15
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 183
    Points : 38
    Points
    38
    Par défaut
    @Grosbenji:

    En fait dans mon dessin, apres avoir dessiné les valeurs en biais je dois dessiner aussi du texte horizontal....

    @Medinoc... ben oui le SelectObject(hdc,oldfont) je veux bien le mettre mais je ne l'aurais defini nulle part avant... ou je ne comprend encore rien?

  16. #16
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Code C : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    void AngleTextOut(HDC hdc,int Angle,int X, int Y, char const *Str)
    {
      LOGFONT lf;
      HFONT newFont;
      HGDIOBJ oldFont;
      memset(&lf,0,sizeof(lf));
      lf.lfHeight=13;
      lf.lfWidth=0;
      strcpy(lf.lfFaceName,"Tahoma");
      lf.lfEscapement = Angle*10;
      lf.lfItalic = 0;
      lf.lfStrikeOut = 0;
      lf.lfUnderline =0;
      lf.lfWeight =0;
      lf.lfOrientation = lf.lfEscapement;
      lf.lfPitchAndFamily = FIXED_PITCH | FF_DONTCARE;
      lf.lfOutPrecision = OUT_TT_PRECIS;
      lf.lfQuality = PROOF_QUALITY;
     
      newFont = CreateFontIndirect(&lf);
      oldFont = SelectObject(hdc, newFont); // <---- oldFont réglé ici
      SetBkMode(hdc, TRANSPARENT);
      TextOut(hdc,X,Y,Str,strlen(Str));
      SelectObject(hdc, oldFont);           // <---- oldFont utilisé ici
      DeleteObject(newFont);
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  17. #17
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 183
    Points : 38
    Points
    38
    Par défaut
    hii merci , c'est ca qui bugguait : HGDIOBJ oldFont; enfin qui manquait quoi et que j'avais zappé de changer... aie aie aie
    ca marche du feu de dieur..

    merci a vous deux !

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

Discussions similaires

  1. Dessiner du texte, avec des fonts et styles différents
    Par soa dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 23/08/2011, 17h53
  2. [Débutant] dessiner un retangle dans mon image avec un certain orientation.
    Par slaima15 dans le forum MATLAB
    Réponses: 4
    Dernier message: 22/07/2011, 15h06
  3. Android : Dessiner un text defilant avec Canvas
    Par nicolofontana12 dans le forum Composants graphiques
    Réponses: 4
    Dernier message: 27/01/2010, 23h34
  4. Réponses: 2
    Dernier message: 08/04/2009, 06h39
  5. Dessiner un rectangle avec bords et texte ...
    Par Djedjeridoo dans le forum Composants VCL
    Réponses: 3
    Dernier message: 16/06/2003, 17h17

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