A Form1 konstruktorában írjuk ki a telepített Font-ok tulajdonságait egy ListView komponensbe.
public Form1()
{
InitializeComponent();
A betűtípusok és adataik lekérdezésében az InstalledFontCollection osztály segít bennünket.
InstalledFontCollection ifc = new InstalledFontCollection();
string[] s = new string[6];
Ennek Families property-jében kapunk egy olyan tömböt, melynek minden eleme egy FontFamily osztály, ami egy-egy Font tulajdonságát tartalmazza. Így nincs más tennivalónk, mint egy ciklus segítségével végigmenni ezen a tömbön.
foreach (FontFamily ff in ifc.Families)
{
Csak azokkal a betűtípusokkal foglalkozunk, melyeknek van alap stílusú karaktere. Ezt az IsStyleAvailable függvény segítségével dönthetjük el, mely igaz értékkel tér vissza, ha az adott Font a függvény paraméterében megadott stílust tartalmazza.
if (ff.IsStyleAvailable(FontStyle.Regular))
{
Ezt követően a FontFamily osztály tulajdonságait, melyek kötődnek az adott betűtípushoz elhelyezzük egy sztring tömbben.
s[0] = ff.Name;
s[1] = ff.GetCellAscent(FontStyle.Regular).ToString();
s[2] = ff.GetCellDescent(FontStyle.Regular).ToString();
s[3] = ff.GetEmHeight(FontStyle.Regular).ToString();
s[4] = ff.GetHashCode().ToString();
s[5] = ff.GetLineSpacing(FontStyle.Regular).ToString();
Ezt adjuk hozzá a ListView-hez az Items Add függvény hívással úgy, hogy létrehozunk egy új ListViewItems osztályt, mely leírja az adott elem tulajdonságait.
listView1.Items.Add(new ListViewItem(s));
}
}
}
Egy-egy betűtípussal történő felirat megjelenítést a Form Paint eseményénél végzünk el.
private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
if (listView1.FocusedItem != null)
{
Itt létrehozunk egy új Font-ot 26-os betűmérettel, méghozzá abból a típusból, mely a ListView-ben aktuálisan kijelölt.
string s = (string)listView1.FocusedItem.SubItems[0].Text;
Font f = new Font(s, 26);
Majd ezt követően a Graphics osztályt DrawString függvényével kirajzolunk egy szöveget a Form területére a kiválasztott betűtípussal.
e.Graphics.DrawString("Software Online", f, new SolidBrush(Color.Blue), 10, 10);
}
}