C# - Tetszőleges szöveg szélességének, magasságának meghatározása

forráskód letöltése
Nyomtatásnál, képernyőre íráskor sok esetben szükséges tudnunk azt az információt, hogy egy adott szöveg, egy adott betűtípussal megjelenítve mekkora helyet igényel szélességre épp úgy mint magasságra. Ennek meghatározását valósítjuk meg ebben a cikkben.
A feladatunk az lesz, hogy a textBox1-be írt szöveg szélességét és magasságát jelenítsük meg, amint a szöveg változik. Ehhez fel kell használnunk a TextChanged eseményt.
A két szükséges érték meghatározásához a Graphics osztály MeasureString függvénye nyújt segítséget, de itt egy olyan problémába ütközünk, hogy a TextChanged eseménynél nem áll rendelkezésünkre ilyen osztály úgy, mint a Form Paint eseményénél. Ami nincs, azt viszont létre tudjuk hozni. A Graphics osztály FromHwnd statikus függvényét meghívva és paraméterként átadva számára a Form-unk azonosítóját, kapunk egy olyan példányt a Graphics osztályból, melyet felhasználhatunk a Form-ra történő rajzoláshoz, illetve a MeasureString függvény meghívásához.
    private void textBox1_TextChanged(object sender, System.EventArgs e)
    {
      Graphics g = Graphics.FromHwnd(this.Handle);
Most hogy adott a Graphics osztály, már meg is hívhatjuk annak MeasureString nevű függvényét. Első paraméterként a kérdéses sztringet kell átadni, míg másodikként azt a Font-ot, melyet a sztring megjelenítéséhez használunk. Visszatérési értékként SizeF típusban kapjuk az eredményt, melyet már egyszerűen megjeleníthetünk.
      SizeF s = g.MeasureString(textBox1.Text, textBox1.Font);
      label1.Text = "Width: " + s.Width.ToString() + " pixel\nHeight: " + s.Height.ToString() + " pixel";
Ha már nincs szükségünk a létrehozott Graphics osztályra, akkor ezt a Dispose függvény hívásával szüntethetjük meg.
      g.Dispose();
    }