FontFamilies: IsStyleAvailable,

image_pdfimage_print
   
 

using System;
using System.Drawing;
using System.Drawing.Text;
using System.Drawing.Drawing2D;
using System.Windows.Forms;

class FamiliesList : Form {
    const int iPointSize = 12;

    public static void Main() {
        Application.Run(new FamiliesList());
    }
    public FamiliesList() {
        Text = "Font Families List";
        ResizeRedraw = true;
    }
    protected override void OnPaint(PaintEventArgs pea) {
        DoPage(pea.Graphics, ForeColor, ClientSize.Width, ClientSize.Height);
    }
    protected void DoPage(Graphics grfx, Color clr, int cx, int cy) {
        Brush brush = new SolidBrush(clr);
        float x = 0, y = 0, fMaxWidth = 0;

        FontCollection fc = new InstalledFontCollection();
        FontFamily[] aff = fc.Families;

        foreach (FontFamily ff in aff) {
            Font font = CreateSampleFont(ff, iPointSize);
            SizeF sizef = grfx.MeasureString(ff.Name, font);

            fMaxWidth = Math.Max(fMaxWidth, sizef.Width);
        }
        foreach (FontFamily ff in aff) {
            Font font = CreateSampleFont(ff, iPointSize);
            float fHeight = font.GetHeight(grfx);

            if (y > 0 && y + fHeight > cy) {
                x += fMaxWidth;
                y = 0;
            }
            grfx.DrawString(ff.Name, font, brush, x, y);

            y += fHeight;
        }
    }

    Font CreateSampleFont(FontFamily ff, float fPointSize) {
        if (ff.IsStyleAvailable(FontStyle.Regular))
            return new Font(ff, fPointSize);

        else if (ff.IsStyleAvailable(FontStyle.Bold))
            return new Font(ff, fPointSize, FontStyle.Bold);

        else if (ff.IsStyleAvailable(FontStyle.Italic))
            return new Font(ff, fPointSize, FontStyle.Italic);

        else
            return Font;
    }
}

    


This entry was posted in 2D Graphics. Bookmark the permalink.