2009-04-06 13 views
15

Ho una piccola scheda che mostra alcune informazioni sullo stato di avanzamento.
Molto raramente devo mostrare un messaggio piuttosto lungo e voglio essere in grado di ridimensionare questo modulo quando necessario in modo che questo messaggio si adatti al modulo.Come determinare la dimensione di una stringa dato un font

Quindi, come faccio a sapere come viene visualizzata la stringa larga S nel font F?

risposta

17

Dipende dal motore di rendering utilizzato. Puoi fondamentalmente passare da GDI a GDI +. La commutazione può essere fatto impostando la UseCompatibleTextRendering proprietà di conseguenza

Quando si utilizza GDI + si dovrebbe usare MeasureString:

string s = "A sample string"; 

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

Quando si utilizza GDI (ad esempio il rendering nativo Win32) si dovrebbe utilizzare la classe TextRenderer:

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

Vedi questo articolo: Text Rendering: Build World-Ready Apps Using Complex Scripts In Windows Forms Controls

+0

Grazie TextRenderer.MeasureText ha funzionato – Nifle

5

ne dite di questo:

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

(Here è il legame MSDN.)

0

Di nuovo in Win32 stavo usando l'equivalente per la funzione VisualStyleRenderer :: GetTextExtent per questo.

Problemi correlati