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
et j'appelle la fonction dans OnPaint de la façon suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 foreach(Element oElement in cElements) x+=Print(oGraphics,oElement.Brush,oElement.Text,x,y)
Par exemple, je dessine:
où le | represente les séparation entre chaque élément dessiné
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2|<Sequence|Name|=|"toto"|>| |</Sequence|>|
et en résultat j'ai:
j'utilise la police Microsoft Sans Serif en taille 9 Standard
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2|<Sequence |Name |= |"toto" |>| |</Sequence |>|
Partager