J'utilise dessin personnalisé pour dessiner une chaîne dans une application WinForms. La méthode classique Graphics.DrawString est utilisé pour que:Graphics.DrawString: compte le nombre de caractères entièrement affiché dans le rectangle efficacement
g.DrawString(text, font, brush, rect, stringFormat);
La chaîne de sortie text
peut être coupée par le rectangle rect
, et je dois compter le nombre de caractères entièrement visibles dans rect
. Comment faire cela en utilisant les outils intégrés .NET Framework?
Veuillez ne pas suggérer d'utiliser d'autres méthodes pour envoyer du texte. J'ai besoin de résoudre cette tâche pour GDI + Graphics.DrawString.
MISE À JOUR: Oui, bien sûr, je peux utiliser Graphics.MeasureString dans une boucle dans laquelle je résume la largeur de chaque caractère depuis le début de la chaîne, mais je dois quelque chose de plus efficace comme le drapeau DT_MODIFYSTRING
dans le WinAPI DrawText fonction.
Ajoutez à cela que Graphics.MeasureString
ne calcule pas correctement la largeur requise. Pour de plus d'informations, consultez cet article:
http://www.codeproject.com/Articles/2118/Bypass-Graphics-MeasureString-limitations
Connaissez-vous Graphics.MeasureString? https://msdn.microsoft.com/en-us/library/6xe5hazb(v=vs.110).aspx – Biscuits
@Biscuits, connaissez-vous les problèmes liés à Graphics.MeasureString? Voir, par exemple, [this] (http://www.codeproject.com/Articles/2118/Bypass-Graphics-MeasureString-limitations). Il semble que nous devons utiliser [StringFormat.SetMeasurableCharacterRanges] (https://msdn.microsoft.com/en-us/library/system.drawing.stringformat.setmeasurablecharacterranges (v = vs.110) .aspx) pour des calculs plus précis . – TecMan