2009-04-06 14 views
15

Tengo un pequeño formulario que muestra información sobre el progreso.
Muy raramente tengo que mostrar un mensaje bastante largo y quiero poder cambiar el tamaño de este formulario cuando sea necesario para que este mensaje encaje en el formulario.Cómo determinar el tamaño de una cadena dada una fuente

Entonces, ¿cómo averiguo cómo se representará la cadena de ancho S en la fuente F?

Respuesta

17

Depende del motor de renderizado que se utilice. Básicamente puede cambiar entre GDI y GDI +. La conmutación puede realizarse estableciendo la propiedad UseCompatibleTextRendering consecuencia

Cuando se utiliza GDI + se debe utilizar MeasureString:

string s = "A sample string"; 

SizeF size = e.Graphics.MeasureString(s, new Font("Arial", 24)); 

Cuando se utiliza GDI (es decir, la prestación de Win32 nativo) se debe utilizar la clase TextRenderer:

SizeF size = TextRenderer.MeasureText(s, new Font("Arial", 24)); 

Ver este artículo: Text Rendering: Build World-Ready Apps Using Complex Scripts In Windows Forms Controls

+0

Gracias TextRenderer.MeasureText worked – Nifle

5

¿Qué tal esto:

Size stringsize = graphics.MeasureString("hello", myFont); 

(Here es el enlace de MSDN.)

0

De vuelta en el Win32 que estaba usando el equivalente para la función VisualStyleRenderer :: GetTextExtent para esto.

Cuestiones relacionadas