MeasureString en Pixel

DIMUSERS Messages postés 37 Date d'inscription jeudi 8 juin 2006 Statut Membre Dernière intervention 2 septembre 2010 - 1 mai 2007 à 15:49
DIMUSERS Messages postés 37 Date d'inscription jeudi 8 juin 2006 Statut Membre Derniè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

st.antoine

3 réponses

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

<hr />
-Blog-
0
DIMUSERS Messages postés 37 Date d'inscription jeudi 8 juin 2006 Statut Membre Derniè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
0
Rejoignez-nous