Mega Code Archive

 
Categories / C# / 2D Graphics
 

FontFamilies

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;     } }