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 :

Probleme pour dimensionner un TextRect en fonction de la Dimension de la Fonte


Sujet :

C++Builder

  1. #1
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut Probleme pour dimensionner un TextRect en fonction de la Dimension de la Fonte
    Pour la poursuite de mon TLabel Vertical j'ecrit mes caracteres a l'aide de ce bout de code:
    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
     
    int Gauche = 0;
    int Haut = 0;
    int Droite = 10;
    int Bas = 10;
            TRect TheRect;
    for (int j = 0; j <= nbcar; j++)
            {
    for (int i = 0; i <= k; i++)
            {
            c = StringGrid1->Cells[i][j];
            if (c == "")
            {
            c = " ";
            }
    // ici on fait l'affichage
    // Gauche, Haut, Droite, Bas
            TheRect = Rect(Gauche + (i * 10), Haut + (j * 10), Droite + (i * 10), Bas + (j * 10));
            Label1->Canvas->TextRect(TheRect, Gauche + (i * 10), Haut + (j * 10), c);
            }// fin for i
            }// fin for j
    Cela fonctionne tres bien quelque soit la Fonte choisie, la presentation en colonne est parfaite, le seul probleme que je rencontre c'est que je n'arrive pas a faire la relation entre la dimension de la Fonte et les dimension du rectangle dans lequel j'ecrit mon caractere.

  2. #2
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Salut, je ne sais pas comment faire avec BCB, mais avec VC++ j'utilise la fonction GetTextExtentPoint32: http://msdn2.microsoft.com/en-us/library/ms534223.aspx

    Il y a sans doute un équivalent BCB!

  3. #3
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Merci pour ta reponse Crayon:
    Je vais chercher de ce cote

  4. #4
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Je sais même comment le faire avec PHP, c'est avec imagettfbbox: http://ca.php.net/imagettfbbox

    Mais avec BCB, j'ai jamais eu la chance de le faire

  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
    Il me semble que le Canvas gère ca très bien avec ses fonctions TextHeight et TextWidth:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        Canvas->Font->Size = 8;
        int i = Canvas->TextHeight("texte");  //13
        int j = Canvas->TextWidth("texte");  //23
        Canvas->Font->Size = 10;
        i = Canvas->TextHeight("texte");  //16
        j = Canvas->TextWidth("texte");  //28
    Tu auras la taille et la longueur du texte "texte".

  6. #6
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Salut bandit boy:
    Merci pour ta reponse c'est ce que j'avais trouve sur un composant de CGI, la ma fonction est terminee il me faut juste l'optimiser car actuellement je passe par un StringGrid et je pense avoir une solution pour traiter directement l'affichage
    Le code:
    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
     
    int zz = Label1->Canvas->TextHeight(Caption);
    int yy = Label1->Canvas->TextWidth(Caption);
    int Gauche = 0;
    int Haut = 0;
    int Droite = yy;
    int Bas = zz;
            TRect TheRect;
    for (int j = 0; j <= nbcar; j++)
            {
    for (int i = 0; i <= k; i++)
            {
            c = StringGrid1->Cells[i][j];
            if (c == "")
            {
            c = " ";
            }
    // ici on fait l'affichage
    // Gauche, Haut, Droite, Bas
            TheRect = Rect(Gauche + (i * 15), Haut + (j * 12), Droite + (i * 15), Bas + (j * 12));
            Label1->Canvas->TextRect(TheRect, Gauche + (i * 15), Haut + (j * 12), c);
            }// fin for i
            }// fin for j
    Avec ce code j'arrive a simuler un WordWrap Vertical quelque soit la taille et le type de police de caracteres, avec une presentation correcte.
    Je met resolu pour ce post et je reprend celui de mon LabelVertical, j'ai encore a resoudre deux ou trois petits problemes.

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

Discussions similaires

  1. PERL/Tk: probleme pour lancer deux fois la fonction destroy
    Par seben dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 04/03/2009, 15h53
  2. Probleme vba pour renvoyer une valeur en fonction de deux criteres
    Par tarif dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/04/2008, 19h28
  3. Probleme pour dimensionner une fenetre à l'image
    Par lib&lul dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 29/10/2007, 17h43
  4. Réponses: 8
    Dernier message: 14/05/2007, 17h10
  5. autre probleme pour deriver fonction
    Par voyageur dans le forum Mathématiques
    Réponses: 15
    Dernier message: 28/07/2003, 14h37

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