Savoir la taille en pixel que prendra un texte dans une police x - Divers - Programmation
Marsh Posté le 01-10-2003 à 23:53:16
la fonction GetTextExtentPoint32() de l'api win32 fait ca a merveille.
Si t'as pas le droit d'utiliser du win32, alors je sais pas.
Marsh Posté le 02-10-2003 à 09:10:24
C'est pas tout à fait ça, car je ne peux pas préciser la fonte et la taille de celle-ci...
Marsh Posté le 02-10-2003 à 09:44:46
JagStang a écrit : C'est pas tout à fait ça, car je ne peux pas préciser la fonte et la taille de celle-ci... |
Si, en définissant ta fonte dans le DC que tu passes à ta fonction. Voici un petit bout de code qui me permettait d'avoir la taille d'un texte dans une barre d'état (en C/C++/MFC):
Code :
|
Ici, j'utilise la fonction GetOutputTextExtent et je récupère la fonte utilisée avec SystemParametersInfo.
Marsh Posté le 02-10-2003 à 10:58:38
JagStang a écrit : "Je mange des cerises" en Verdana, 14 ---> 28 px |
Ça dépend de ta façon de créer la fonte, avec internal leading ou sans : regarde le signe de nHeight dans http://msdn.microsoft.com/library/ [...] t_8fp0.asp
Marsh Posté le 01-10-2003 à 23:20:35
Je me demandais s'il y avait un algo, pour savoir, avant de le dessiner, la place que prendrait un texte.
Par exemple
"Je mange des cerises" en Verdana, 14 ---> 28 px
La solution serait de prendre un fonte à largeur fixe, mais bon. c'est pas terrible terrible...
Si qqn sait me dire la largeur de chaque lettre, je peux me débrouiller.
J'ai développé une librairie pour générer des graphiques SVG en C#, et le wordwrapping n'existe pas en version 1.1 (il est prévu pour la version de SVG 1.2)
Une démo de ma librairie : http://dev.icare.ch/svgdemo/ (plugin SVG à télécharger)
En fait j'aimerais adapter mon texte sur plusieurs lignes dans un carré (max 3 lignes) et si le texte est trop long, le diminuer
Si quelqu'un a une piste... Merci d'avance