FontFamily.IsStyleAvailable : FontFamily « System.Drawing « C# / C Sharp by API






FontFamily.IsStyleAvailable

  
/*
GDI+ Programming in C# and VB .NET
by Nick Symmonds

Publisher: Apress
ISBN: 159059035X
*/

using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Text;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace FontAttr_c
{
    /// <summary>
    /// Summary description for FontAttr.
    /// </summary>
    public class FontAttr : System.Windows.Forms.Form
    {
    private System.Windows.Forms.Button cmdGo;
    private System.Windows.Forms.Panel P1;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;

        public FontAttr()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //
        }

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null) 
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }

        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
      this.cmdGo = new System.Windows.Forms.Button();
      this.P1 = new System.Windows.Forms.Panel();
      this.SuspendLayout();
      // 
      // cmdGo
      // 
      this.cmdGo.Location = new System.Drawing.Point(264, 288);
      this.cmdGo.Name = "cmdGo";
      this.cmdGo.Size = new System.Drawing.Size(56, 24);
      this.cmdGo.TabIndex = 0;
      this.cmdGo.Text = "GO";
      this.cmdGo.Click += new System.EventHandler(this.cmdGo_Click);
      // 
      // P1
      // 
      this.P1.AutoScroll = true;
      this.P1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
      this.P1.Location = new System.Drawing.Point(16, 32);
      this.P1.Name = "P1";
      this.P1.Size = new System.Drawing.Size(304, 240);
      this.P1.TabIndex = 1;
      // 
      // FontAttr
      // 
      this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
      this.ClientSize = new System.Drawing.Size(342, 323);
      this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                  this.P1,
                                                                  this.cmdGo});
      this.MaximizeBox = false;
      this.MinimizeBox = false;
      this.Name = "FontAttr";
      this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
      this.Text = "FontAttr";
      this.Load += new System.EventHandler(this.FontAttr_Load);
      this.ResumeLayout(false);

    }
        #endregion

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main() 
        {
            Application.Run(new FontAttr());
        }

    private void FontAttr_Load(object sender, System.EventArgs e)
    {
    }

    private void EnumInstalledFonts()
    {
      FontStyle Style;
      int y = 0;

      foreach (FontFamily ff in FontFamily.Families)
      {
        if ( ff.IsStyleAvailable(Style = FontStyle.Regular) )
          AddString(ff, ref y, Style);
        if ( ff.IsStyleAvailable(Style = FontStyle.Bold) )
          AddString(ff, ref y, Style);
        if ( ff.IsStyleAvailable(Style = FontStyle.Italic) )
          AddString(ff, ref y, Style);
        if ( ff.IsStyleAvailable(Style = FontStyle.Strikeout) )
          AddString(ff, ref y, Style);
        if ( ff.IsStyleAvailable(Style = FontStyle.Underline) )
          AddString(ff, ref y, Style);
      }
    }

    private void AddString(FontFamily ff, ref int y, FontStyle Style)
    {
      using ( Font fnt = new Font(ff, 12, Style, GraphicsUnit.Pixel) )
      {
        int LineSpace = (int)(ff.GetLineSpacing(Style) * 
                              fnt.Size / ff.GetEmHeight(Style));
        y += LineSpace + 2;

        PictureBox P = new PictureBox();
        P.Height = LineSpace;
        P.Width = P1.Width;
        Bitmap B = new Bitmap(P.Width, P.Height);
        using (Graphics G = Graphics.FromImage(B))
        {
          G.DrawString(ff.Name + " : Style = " + Style.ToString(), 
                       fnt, Brushes.Black, 0, 0);
        }
        P.Image=B;
        P1.Controls.Add(P);
        P1.Controls[P1.Controls.Count-1].Location = new Point(2, y);
        if ( y < P1.Height )
          P1.Refresh();
      }
    }

    private void cmdGo_Click(object sender, System.EventArgs e)
    {
      P1.Controls.Clear();
      EnumInstalledFonts();
    }

    }
}

   
    
  








Related examples in the same category

1.FontFamily.GetCellAscent
2.FontFamily.GetCellDescent
3.FontFamily.GetEmHeight
4.FontFamily.GetLineSpacing