DIMUSERS
Messages postés37Date d'inscriptionjeudi 8 juin 2006StatutMembreDernière intervention 2 septembre 2010
-
1 mai 2007 à 15:49
DIMUSERS
Messages postés37Date d'inscriptionjeudi 8 juin 2006StatutMembreDernière intervention 2 septembre 2010
-
3 mai 2007 à 21:39
Bonjour à tous,
Je suis devant un mystère.
Je cherche à mesurer une chaine de caractères en pixels. J'utilise le GDI+ donc la méthode MeasureString (et pas MeasureText qui provient du GDI et qui donne elle, des résultats cohérent, mais qui par ailleurs ne convient à mon application).
Ce qui me trouble, c'est que MeasureString ne revoie pas des nombres entiers, mais plutôt de nombres réels. Je suis peut être vieux jeu, mais pour moi 1,333 pixel, non seulement ça ne veut rien dire, mais de plus ça ne correspond à aucune réalité physique "Comment afficher 1/3 de pixel" pour moi un pixel est affiché ou il ne l'est pas !
Au delà des principes, celà me pose un réel problème sur des cumuls de longeur.
Voici mon code :
string TextReplic = "i";
Graphics g = this.CreateGraphics();
g.PageUnit = GraphicsUnit.Millimeter;
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
SizeF WH = new SizeF();
WH = g.MeasureString(TextReplic, this.Font, new Point(0,0), StringFormat.GenericTypographic);
Ce qui nous donne WH.Width 2,50830078 et WH.Height 12,4501953 !!!
Merci de vos lumières
leprov
Messages postés1160Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention21 octobre 201017 3 mai 2007 à 13:15
la réponse est dans la question. le pageunit de ton graphics est en millimètres, donc le résultat renvoyé par measurestring est lui aussi en milimètres.
DIMUSERS
Messages postés37Date d'inscriptionjeudi 8 juin 2006StatutMembreDernière intervention 2 septembre 2010 3 mai 2007 à 21:39
Oui, pardon j'ai fais effectivement plusieurs essais et je vous ai soumis par inatention et PAR ERREUR le dernier avec une mesure en mm, mais comme le dit justement bidou qui a du lui aussi faire l'essai, si on remplace GraphicsUnit.Millimeter par GraphicsUnit.Pixel on obtient bien quand même un nombre réel (différent d'ailleurs de celui que l'on obtient avec Millimeter).
Je maintiens donc ma question.
Merci de votre attention.
st.antoine