En primer lugar, la pregunta How to measure width of character precisely?
que se responde, realmente no ayuda para este caso, por lo que este no es un duplicado de ese.cómo medir el ancho de una cuerda con precisión?
Tengo una cadena. Dibujo usando graphics.DrawString
, sin embargo, cuando necesito poner otro después, necesito saber el ancho exacto de la cadena anterior.
Para ello utilizo graphics.MeasureString con:
StringFormat format = new StringFormat(StringFormat.GenericTypographic);
format.Alignment = StringAlignment.Center;
format.Trimming = StringTrimming.None;
format.FormatFlags = StringFormatFlags.MeasureTrailingSpaces;
He intentado muchas otras funciones, tal como TextRendered.MeasureText
sin embargo todas ellas fallar, con todas las posibles combinaciones de parámetros.
la combinación mencionada de MeasureString está más cerca de lo que necesito (funciona en la mayoría de los casos, excepto en el caso de caracteres especiales), sin embargo, usa caracteres como # break it. El ancho es más corto o más largo.
¿Hay alguna manera de obtener un tamaño preciso de texto producido por la función DrawString? ¿Cómo calcula DrawString el tamaño del área de dibujo? Debe ser claramente alguna otra función porque el tamaño siempre difiere.
El código fuente de la aplicación entera está aquí https://gitorious.org/pidgeon/pidgeon-main/ (Archivo donde trabajo con esto, es https://gitorious.org/pidgeon/pidgeon-main/blobs/master/scrollback/SBABox.cs)
posible duplicado de ([Cómo medir el ancho de píxel de la cadena dibujada sobre Drawing.Bitmap en .NET?] http://stackoverflow.com/questions/2555739/how-to-measure-the-pixel-width-of-the-string-drawed-over-drawing-bitmap-in-net) –
si la pregunta claramente no dice MeasureString no funciona, sería un duplicado – Petr
Sin una mejor descripción de cómo y cuándo "no funciona", y un código que incluye MeasureString y DrawString juntos, esto simplemente no es una pregunta real. Vamos con una pequeña caja de prueba. –