J'ai une série de boutons qui affichent les noms de fichiers. Si je définis la propriété Text lorsque le nom de fichier est plus large que le nombre de pixels disponibles, le texte "enveloppe" et à la place si le texte affiché LeftMiddle est affiché LeftTop. Par conséquent, je n'affiche que le nombre de caractères pouvant être affichés (en utilisant la méthode PathCompactPathEx()).Comment faire pour déterminer les pixels disponibles pour le texte dans System.Windows.Forms.Button
Cependant - Comment puis-je savoir combien de pixels sont disponibles? Mon approche actuelle est:
button.Width - button.Image.Width - button.Padding.Horizontal
Cela ne fonctionne pas toujours et parfois le texte enveloppe encore.
Des indices sur la manière correcte de déterminer le nombre de pixels disponibles pour le texte?
Oui, je suppose que je pourrais - étant donné que je connais environ l'espace disponible (voir question). Je suis toujours curieux de savoir pourquoi TextRenderer.MeasureText() peut différer du traitement interne de la peinture des boutons ... Le nombre de pixels disponibles pour le texte dans un bouton doit sûrement pouvoir être calculé? – JohnBarton
Parce que le bouton peut peindre le texte de différentes manières. Par exemple, lorsque FlatStyle == System, le texte est peint par le système, si FlatStyle == Default, la peinture de texte dépend de la propriété UseCompatibleTextRendering, et ainsi de suite. Vous ne connaissez également pas les marges de texte utilisées par la classe de boutons dans différents modes de peinture. – arbiter
Merci d'avoir pris le temps de répondre à la question, très appréciée. – JohnBarton