MeasureString en Pixel

Signaler
Messages postés
37
Date d'inscription
jeudi 8 juin 2006
Statut
Membre
Dernière intervention
2 septembre 2010
-
DIMUSERS
Messages postés
37
Date d'inscription
jeudi 8 juin 2006
Statut
Membre
Dernière intervention
2 septembre 2010
-
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

st.antoine
A voir également:

3 réponses

Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
16
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.
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
44
leprov> si tu le mets en pixel, tu as aussi un résultat avec un nombre à virgule si je ne fais erreur...

<hr />
-Blog-
Messages postés
37
Date d'inscription
jeudi 8 juin 2006
Statut
Membre
Dernière intervention
2 septembre 2010

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