[C#]Problème MeasureString
Bonjour,
j'ai créé un composant pour afficher du code XML en colorant les éléments, attributs, values et commentaires.
j'utilise une fonction qui dessine le texte et renvoie sa largeur pour calculer la position du prochain texte
Code:
1 2 3 4 5 6
| public float Print(Graphics oGraphics, SolidBrush oBrush, string sText, float x, float y)
{
SizeF oSize=oGraphics.MeasureString(sText,this.Font);
oGraphics.DrawString(sText,this.Font,oBrush,x,y);
return oSize.Width;
} |
et j'appelle la fonction dans OnPaint de la façon suivante:
Code:
1 2
| foreach(Element oElement in cElements)
x+=Print(oGraphics,oElement.Brush,oElement.Text,x,y) |
tout s'affiche correctement dans le controle sauf que chaque text dessiné comprend des espaces supplémentaires : la fonction MeasureString me renvoie une largeur plus importante que celle nécessaire.
Par exemple, je dessine:
Code:
1 2
| |<Sequence|Name|=|"toto"|>|
|</Sequence|>| |
où le | represente les séparation entre chaque élément dessiné
et en résultat j'ai:
Code:
1 2
| |<Sequence |Name |= |"toto" |>|
|</Sequence |>| |
j'utilise la police Microsoft Sans Serif en taille 9 Standard