Font Attributes

image_pdfimage_print


/*
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 description for FontAttr.
///

public class FontAttr : System.Windows.Forms.Form
{
private System.Windows.Forms.Button cmdGo;
private System.Windows.Forms.Panel P1;
///

/// Required designer variable.
///

private System.ComponentModel.Container components = null;

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

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

///

/// Clean up any resources being used.
///

protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows Form Designer generated code
///

/// Required method for Designer support – do not modify
/// the contents of this method with the code editor.
///

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

///

/// The main entry point for the application.
///

[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(); } } } FontAttr-c.zip( 10 k)[/csharp]

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