/*
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 FontMetrics_c
{
/// <summary>
/// Summary description for FontMetrics.
/// </summary>
public class FontMetrics : System.Windows.Forms.Form
{
private System.Windows.Forms.Button cmdRoman;
private System.Windows.Forms.Button cmdArial;
private System.Windows.Forms.Button cmdComic;
private System.Windows.Forms.Button cmdCourier;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public FontMetrics()
{
//
// 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.cmdRoman = new System.Windows.Forms.Button();
this.cmdArial = new System.Windows.Forms.Button();
this.cmdComic = new System.Windows.Forms.Button();
this.cmdCourier = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// cmdRoman
//
this.cmdRoman.Location = new System.Drawing.Point(8, 240);
this.cmdRoman.Name = "cmdRoman";
this.cmdRoman.Size = new System.Drawing.Size(104, 24);
this.cmdRoman.TabIndex = 0;
this.cmdRoman.Text = "Times Roman";
this.cmdRoman.Click += new System.EventHandler(this.cmdRoman_Click);
//
// cmdArial
//
this.cmdArial.Location = new System.Drawing.Point(128, 240);
this.cmdArial.Name = "cmdArial";
this.cmdArial.Size = new System.Drawing.Size(104, 24);
this.cmdArial.TabIndex = 1;
this.cmdArial.Text = "Arial Black";
this.cmdArial.Click += new System.EventHandler(this.cmdArial_Click);
//
// cmdComic
//
this.cmdComic.Location = new System.Drawing.Point(248, 240);
this.cmdComic.Name = "cmdComic";
this.cmdComic.Size = new System.Drawing.Size(104, 24);
this.cmdComic.TabIndex = 2;
this.cmdComic.Text = "Comic Sans MS";
this.cmdComic.Click += new System.EventHandler(this.cmdComic_Click);
//
// cmdCourier
//
this.cmdCourier.Location = new System.Drawing.Point(368, 240);
this.cmdCourier.Name = "cmdCourier";
this.cmdCourier.Size = new System.Drawing.Size(104, 24);
this.cmdCourier.TabIndex = 3;
this.cmdCourier.Text = "Courier New";
this.cmdCourier.Click += new System.EventHandler(this.cmdCourier_Click);
//
// FontMetrics
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(492, 273);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.cmdCourier,
this.cmdComic,
this.cmdArial,
this.cmdRoman});
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "FontMetrics";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "FontMetrics";
this.Load += new System.EventHandler(this.FontMetrics_Load);
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new FontMetrics());
}
private void FontMetrics_Load(object sender, System.EventArgs e)
{
}
private void DisplayFontMetrics(FontFamily ff, Font fnt)
{
//Create graphics object and make it pretty
Graphics G = this.CreateGraphics();
G.SmoothingMode=SmoothingMode.AntiAlias;
G.TextRenderingHint=TextRenderingHint.AntiAlias;
//Get some metrics
int LineSpace = (int)(ff.GetLineSpacing(fnt.Style)*
fnt.Size/ff.GetEmHeight(fnt.Style));
int Descent = (int)(ff.GetCellDescent(fnt.Style)*
fnt.Size/ff.GetEmHeight(fnt.Style));
int Ascent = (int)(ff.GetCellAscent(fnt.Style)*
fnt.Size/ff.GetEmHeight(fnt.Style));
//Create the base line to sit the text on
Point BaseLineStart = new Point ( 15, this.Height*3/5);
Point BaseLineEnd = new Point ( this.Width-15, this.Height*3/5);
//Top left corner of text is the ascent
Point StringPoint = new Point(75, (int)(BaseLineStart.Y-Ascent));
//Clear the screen and draw the string on a base line
G.Clear(Color.AliceBlue);
G.DrawString("A j Q", fnt, Brushes.Blue, StringPoint);
G.DrawLine(Pens.Black, BaseLineStart, BaseLineEnd);
//Draw the annotation lines
Size LineSize = new Size(0, LineSpace);
Size AscentSize = new Size(0, Ascent);
Size DescentSize = new Size(0, Descent);
G.DrawLine(Pens.Black, BaseLineStart-LineSize, BaseLineEnd-LineSize);
G.DrawLine(Pens.Red, BaseLineStart-AscentSize, BaseLineEnd-AscentSize);
G.DrawLine(Pens.DarkGreen, BaseLineStart+DescentSize,
BaseLineEnd+DescentSize);
//Annotate
Font AnnoFont = new Font("Arial", 10);
G.DrawString("Line Space = " + LineSpace.ToString(), AnnoFont,
Brushes.Black,
20,
(int)(BaseLineStart.Y-LineSpace-12));
G.DrawString("Ascent = " + Ascent.ToString(), AnnoFont,
Brushes.Red,
250,
(int)(BaseLineStart.Y-Ascent-12));
G.DrawString("Descent = " + Descent.ToString(), AnnoFont,
Brushes.DarkGreen,
350,
(int)(BaseLineStart.Y+Descent/8));
}
private void cmdRoman_Click(object sender, System.EventArgs e)
{
FontFamily ff = new FontFamily("Times New Roman");
Font f = new Font(ff, 75, FontStyle.Regular, GraphicsUnit.Pixel);
DisplayFontMetrics(ff, f);
}
private void cmdArial_Click(object sender, System.EventArgs e)
{
FontFamily ff = new FontFamily("Arial Black");
Font f = new Font(ff, 75, FontStyle.Regular, GraphicsUnit.Pixel);
DisplayFontMetrics(ff, f);
}
private void cmdComic_Click(object sender, System.EventArgs e)
{
FontFamily ff = new FontFamily("Comic Sans MS");
Font f = new Font(ff, 75, FontStyle.Regular, GraphicsUnit.Pixel);
DisplayFontMetrics(ff, f);
}
private void cmdCourier_Click(object sender, System.EventArgs e)
{
FontFamily ff = new FontFamily("Courier New");
Font f = new Font(ff, 75, FontStyle.Regular, GraphicsUnit.Pixel);
DisplayFontMetrics(ff, f);
}
}
}
ASP.NET & Csharp (C#)
ASP.NET & Csharp (C#) , Here you can find my posts about .NET c# .
Fonts Class
/*
GDI+ Programming in C# and VB .NET
by Nick Symmonds
Publisher: Apress
ISBN: 159059035X
*/
using System;
using System.Drawing;
using System.Drawing.Text;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace FontsClass_c
{
/// <summary>
/// Summary description for FontsClass.
/// </summary>
public class FontsClass : System.Windows.Forms.Form
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public FontsClass()
{
//
// 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()
{
//
// FontsClass
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 323);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "FontsClass";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "FontsClass";
this.Load += new System.EventHandler(this.FontsClass_Load);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new FontsClass());
}
private void FontsClass_Load(object sender, System.EventArgs e)
{
}
protected override void OnPaint(PaintEventArgs e)
{
Graphics G = e.Graphics;
G.TextRenderingHint=TextRenderingHint.AntiAlias;
int y = 0;
G.DrawString("Regular", Fonts.Arial_20, Brushes.Black, 50, y+=40);
G.DrawString("Italic", Fonts.ArialItalic_20, Brushes.Black, 50, y+=40);
G.DrawString("Regular", Fonts.Chain_20, Brushes.Black, 50, y+=40);
G.DrawString("Italic", Fonts.ChainItalic_20, Brushes.Black, 50, y+=40);
G.DrawString("Regular", Fonts.Comic_20, Brushes.Black, 50, y+=40);
G.DrawString("Italic", Fonts.ComicItalic_20, Brushes.Black, 50, y+=40);
}
}
public sealed class Fonts
{
private static PrivateFontCollection PFC;
private static FontFamily Arial_FF;
private static FontFamily Comic_FF;
private static FontFamily Chain_FF;
static Fonts(){
PFC = new PrivateFontCollection();
PFC.AddFontFile("C:WINNTFontsArial.ttf");
Arial_FF = PFC.Families[0];
PFC.AddFontFile("chainletters.ttf");
Chain_FF = PFC.Families[1];
PFC.AddFontFile("C:WINNTFontscomic.ttf");
Comic_FF = PFC.Families[2];
}
public static FontFamily[] Families
{
get{ return PFC.Families; }
}
#region Arial Font
public static Font Arial_20
{
get {return new Font(Arial_FF, 20, FontStyle.Regular, GraphicsUnit.Point);}
}
public static Font ArialItalic_20
{
get {return new Font(Arial_FF, 20, FontStyle.Italic, GraphicsUnit.Point);}
}
#endregion
#region Chain font
public static Font Chain_20
{
get {return new Font(Chain_FF, 20, FontStyle.Regular, GraphicsUnit.Point);}
}
public static Font ChainItalic_20
{
get {return new Font(Chain_FF, 20, FontStyle.Italic, GraphicsUnit.Point);}
}
#endregion
#region Comic Font
public static Font Comic_20
{
get {return new Font(Comic_FF, 20, FontStyle.Regular, GraphicsUnit.Point);}
}
public static Font ComicItalic_20
{
get {return new Font(Comic_FF, 20, FontStyle.Italic, GraphicsUnit.Point);}
}
#endregion
}
}
FontsClass-c.zip( 32 k)
Font Attributes
/*
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
{
///
///
public class FontAttr : System.Windows.Forms.Form
{
private System.Windows.Forms.Button cmdGo;
private System.Windows.Forms.Panel P1;
///
///
private System.ComponentModel.Container components = null;
public FontAttr()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
///
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
///
/// 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
///
///
[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]
Font size, name and strike out
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
public class UsingFonts : System.Windows.Forms.Form
{
private System.ComponentModel.Container components = null;
public UsingFonts()
{
InitializeComponent();
}
private void InitializeComponent()
{
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(504, 109);
this.Name = "UsingFonts";
this.Text = "UsingFonts";
}
static void Main()
{
Application.Run( new UsingFonts() );
}
protected override void OnPaint(PaintEventArgs paintEvent )
{
Graphics graphicsObject = paintEvent.Graphics;
SolidBrush brush = new SolidBrush( Color.DarkBlue );
// arial, 12 pt bold
FontStyle style = FontStyle.Bold;
Font arial = new Font( new FontFamily( "Arial" ), 12, style );
// times new roman, 12 pt regular
style = FontStyle.Regular;
Font timesNewRoman = new Font( "Times New Roman", 12, style );
// courier new, 16 pt bold and italic
style = FontStyle.Bold | FontStyle.Italic;
Font courierNew = new Font( "Courier New", 16, style );
// tahoma, 18 pt strikeout
style = FontStyle.Strikeout;
Font tahoma = new Font( "Tahoma", 18, style );
graphicsObject.DrawString( arial.Name +
" 12 point bold.", arial, brush, 10, 10 );
graphicsObject.DrawString( timesNewRoman.Name +
" 12 point plain.", timesNewRoman, brush, 10, 30 );
graphicsObject.DrawString( courierNew.Name +
" 16 point bold and italic.", courierNew,
brush, 10, 54 );
graphicsObject.DrawString( tahoma.Name +
" 18 point strikeout.", tahoma, brush, 10, 75 );
}
}
Get font from Font dialog and redraw string
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
public class Form1 : System.Windows.Forms.Form
{
private System.ComponentModel.Container components;
private System.Windows.Forms.FontDialog fontDlg;
private Font currFont;
public Form1()
{
InitializeComponent();
CenterToScreen();
fontDlg = new System.Windows.Forms.FontDialog();
fontDlg.ShowHelp = true;
Text = "Click on me to change the font";
currFont = new Font("Times New Roman", 12);
}
private void InitializeComponent()
{
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Text = "Form1";
this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseUp);
this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
}
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g = e.Graphics;
g.DrawString("www.kutayzorlu.com/java2s/com...", currFont,
new SolidBrush(Color.Black), 0, 0);
}
private void Form1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (fontDlg.ShowDialog() != DialogResult.Cancel)
{
currFont = fontDlg.Font;
Invalidate();
}
}
}
Get font family info
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Drawing.Imaging;
public class Test
{
static void Main()
{
// Create the format string
String formatString = "{0,-16}{1,8}{2,9}{3,10}{4,14}";
// Write the first line of the table
Console.WriteLine(formatString, "Font Family Name", "Ascent", "Descent",
"EmHeight", "Line Spacing");
// Write font metrics for Courier New font family
FontFamily ff = new FontFamily("Courier New");
Console.WriteLine(formatString, ff.GetName(0),
ff.GetCellAscent(FontStyle.Regular),
ff.GetCellDescent(FontStyle.Regular),
ff.GetEmHeight(FontStyle.Regular),
ff.GetLineSpacing(FontStyle.Regular));
}
}
Draw font cell ascent, cell descent, line space, em height
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
public class Form1 : Form {
protected override void OnPaint(PaintEventArgs e) {
Graphics g = e.Graphics;
g.FillRectangle(Brushes.White, this.ClientRectangle);
FontFamily ff = new FontFamily("Times New Roman");
float emSizeInGU = 24f;
Font f = new Font(ff, emSizeInGU);
int emSizeInDU = ff.GetEmHeight(FontStyle.Regular);
int ascentInDU = ff.GetCellAscent(FontStyle.Regular);
int descentInDU = ff.GetCellDescent(FontStyle.Regular);
int lineSpacingInDU = ff.GetLineSpacing(FontStyle.Regular);
float ascentInGU = ascentInDU * (emSizeInGU / emSizeInDU);
float descentInGU = descentInDU * (emSizeInGU / emSizeInDU);
float lineSpacingInGU = lineSpacingInDU * (emSizeInGU / emSizeInDU);
PointF textOrigin = new PointF(20, 20);
PointF nextLineOrigin = new PointF(textOrigin.X,textOrigin.Y + f.Height);
g.DrawString("AxgQ", f, Brushes.Black, textOrigin);
g.DrawString("AxgQ", f, Brushes.Black, nextLineOrigin);
int lineLen = 100;
g.DrawLine(Pens.Blue,textOrigin,new PointF(textOrigin.X + lineLen, textOrigin.Y));
g.DrawLine(Pens.Red,nextLineOrigin,new PointF(nextLineOrigin.X + lineLen, nextLineOrigin.Y));
PointF p = new PointF(textOrigin.X,textOrigin.Y + lineSpacingInGU);
g.DrawLine(Pens.Blue, p,new PointF(p.X + lineLen, p.Y));
p = new PointF(nextLineOrigin.X,nextLineOrigin.Y + lineSpacingInGU);
g.DrawLine(Pens.Red, p,new PointF(p.X + lineLen, p.Y));
p = new PointF(textOrigin.X,textOrigin.Y + lineSpacingInGU - ascentInGU);
g.DrawLine(Pens.Blue, p,new PointF(p.X + lineLen, p.Y));
p = new PointF(nextLineOrigin.X, nextLineOrigin.Y +lineSpacingInGU - ascentInGU);
g.DrawLine(Pens.Red, p, new PointF(p.X + lineLen, p.Y));
p = new PointF(textOrigin.X,textOrigin.Y + lineSpacingInGU + descentInGU);
g.DrawLine(Pens.Blue, p,new PointF(p.X + lineLen, p.Y));
p = new PointF(nextLineOrigin.X,nextLineOrigin.Y + lineSpacingInGU + descentInGU);
g.DrawLine(Pens.Red, p,new PointF(p.X + lineLen, p.Y));
}
public static void Main() {
Application.Run(new Form1());
}
}