Accueil > Forum > > > > [CPP] calcul de la longueur du texte en fonction de la largeur du label
[CPP] calcul de la longueur du texte en fonction de la largeur du label
vendredi 20 octobre 2006 à 15:31:38 |
[CPP] calcul de la longueur du texte en fonction de la largeur du label

Titi035
|
Salut,
J'ai un texte que je souhaite afficher dans un label. Si le texte est trop
grand, j'aimerais qu'il soit tronqué et qu'il se termine par "...".
Est-ce qu'un algorithme pour faire cette opération existe (en c++)?
Le type de police et la taille ne changeront pas. Pour facilité l'opération, je
me suis fait un tableau avec, pour chaque caractère ascii, la largeur en pixel.
Avez-vous des suggestions?
|
|
vendredi 20 octobre 2006 à 16:35:53 |
Re : [CPP] calcul de la longueur du texte en fonction de la largeur du label

SnOOpss
|
Je ne voit pas trop la difficulté !
Il existe des fonctions permettant de savoir la longeur d'un texte
En caractere : strlen()
En pixel DrawText() avec DT_CALCRECT
Apres je me servirais par exemple de strncpy() pour "couper ma chaine" et Strcat() pour rajouter des "..." mais je suis sur qu'il ya aussi des fonctions pouvant faire les deux a la fois.
|
|
vendredi 20 octobre 2006 à 16:56:17 |
Re : [CPP] calcul de la longueur du texte en fonction de la largeur du label

Titi035
|
Ce n'est pas aussi simple que ça : strlen renvoie le nb de caratères. Mais tous les caractères n'ont pas la même largeur! J'ai une appli (IHM) avec des labels. Dans ces labels, je doit mettre des textes qui sont dans une base de données. Il faut que je développe une lib qui calcule si le texte rentre dans la label. Pour ça, je dois parser le texte et calculer sa largeur en fonction de la largeur de chaque lettre. Je tronque si besoin à la fin d'un mot. Le label peut être éventuellement multi-lignes, la police a une taille de 12 ou 16. La lib doit être indépendante de l'appli IHM (que je ne développe pas). Par contre, j'ai les infos de largeur des labels et je sais pour chaque label si le texte est en 12 ou en 16, si il est multi ligne ou single ligne. des idées? 
|
|
vendredi 20 octobre 2006 à 16:59:43 |
Re : [CPP] calcul de la longueur du texte en fonction de la largeur du label

aardman
|
Salut,
Pour afficher du texte tronqué, on peut directement utiliser DrawText avec le flag DT_END_ELLIPSIS.
Si c'est dans un label (static), on peut mettre le label en ownerdraw et dessiner avec DrawText().
|
|
vendredi 20 octobre 2006 à 17:08:06 |
Re : [CPP] calcul de la longueur du texte en fonction de la largeur du label

Titi035
|
Je ne cherche pas des fonction pour afficher ou dessiner, mais un algo intelligent pour tronquer un texte. Je cherche un algo pour développer une librairie..  voir mon précédent post..
|
|
vendredi 20 octobre 2006 à 17:46:06 |
Re : [CPP] calcul de la longueur du texte en fonction de la largeur du label

SnOOpss
|
En pixel DrawText() avec DT_CALCRECT
Si tu connait exactement la police (sinon il te fut la recuperer) tu peux avoir exactement les dimensions de ton texte au pixel pres (ca te retourne un RECT) et ca marche aussi pour le multiligne.
|
|
vendredi 20 octobre 2006 à 18:17:26 |
Re : [CPP] calcul de la longueur du texte en fonction de la largeur du label

Titi035
|
Merci pour votre aide. elle a l'air pas mal cette fonction.
maheureusment le police est propriétaire. Je n'ai qu'un tableau dans lequel on m'a fourni la largeur des caractères pour chaque code ascii.
|
|
vendredi 20 octobre 2006 à 18:39:45 |
Re : [CPP] calcul de la longueur du texte en fonction de la largeur du label

SnOOpss
|
Lol, pourquoi faire simple quand on peut faire compliqué. Moi perso je passerais tout les caractere de mon texte ( Chaine[0] chaine[1] chaine [2] etc ... ) en additionnant la valeur en pixel de ton tableau et je m'arrete a longueur du label - "..."
un truc du style
int curlong=0;
int i = 0;
chaine = "texte de mon label";
While ((curlong < longeur du label - nbre de pixel de "...") || (i >= Strlen(chaine))
{
curlong+=valeur en pixel de chaine[i];
i+=1;
}
strncpy(label_a_afficher,chaine,i);
strncat(label_a_afficher,"...");
|
|
vendredi 20 octobre 2006 à 18:41:12 |
Re : [CPP] calcul de la longueur du texte en fonction de la largeur du label

SnOOpss
|
While ((curlong < longeur du label - nbre de pixel de "...") && (i < Strlen(chaine)) plutot sinon boucle sans fin
|
|
vendredi 20 octobre 2006 à 18:47:46 |
Re : [CPP] calcul de la longueur du texte en fonction de la largeur du label

Titi035
|
Oui, je suis parti sur une solution comme ça. 
|
|
Cette discussion est classée dans : label, texte, cpp, calcul, largeur
Répondre à ce message
Sujets en rapport avec ce message
traitement de texte source [ par flamel ]
Bonjour.Je cherche une source de traitement de texte simple en Cpp du genre "Bloc-Note", pour pouvoir le modifier avec Visual Cpp.Je voudrais avoir ac
hauteur et largeur de texte [ par salim_samir ]
salut à tous comment je peut modifie la taille d'une texte affiché sur l'ecran en langage c,par exemple printf("salut"); comment je peut modifie le mo
Calcul numérique avec Dev cpp [ par ffnajia ]
Bonjour à tous,Est ce que c'est possible de faire du calcul numérique avec dev cpp? on peut trouver des solveur pour résoudre des équations différenti
creation de fichier en cpp [ par bissmillah ]
J'aimerai avoir de l'aide grace aux menbres inscrits,pour créer un fichier texte en cpp,moi j'ai essayer de le créer en c ,c'est un fichier texte dans
choix de la taille de la police [ par mogwai93 ]
Bonjour J'ai un static d'une largeur définie A l'intérieur de celui-ci, je place un texte dans une police de mon choix (on va faire simple, on va dir
largeur du texte unicode à imprimer [ par wissis_19 ]
Bonjour,Comment précalculer la largeur (en mm) d'un chaîne de carctères à imprimer pour un alphabet donné ?Détails :Je veux imprimer une liste de noms
Qu'est ce que le CPP ? [ par Anthotill ]
BonjourJe souhaiterais savoir comment on fait pour exécuter les *.cpp je trouve des trucs interessant que j'aimerais voir fonctionner mais comme c'est
Calcul du squelette d'une forme 2D ou 3D [ par FiReTiTi ]
Bonjour, je souhaiterai savoir si quelqu'un saurait où trouver du code qui calcule le squelette d'une forme 2D ou 3D. De préférence, des méthodes autr
plusieurs fichiers CPP dans un exe ? [ par papi2 ]
Bonjour,Est-il possible de mettre plusieurs fichiers cpp (qui en fait sont des fenêtres) dans un seul exe, plutôt que d'avoir un exe pour chaque fichi
Creer un label multiligne ressource [ par sebastienmz ]
Bonjour Voila mon code qui est dans mon fichier .rc: LTEXT "salu\n sava",IDC_LBLDES,7,7,80,80,SS_CENTERIMAGE, WS_EX_CLIE
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|