using System;
using System.Drawing;
using System.Windows.Forms;
class FontMenuForm: Form
{
protected string strText = "Sample Text";
protected Font font = new Font("Times New Roman", 24, FontStyle.Italic);
public static void Main()
{
Application.Run(new FontMenuForm());
}
public FontMenuForm()
{
ResizeRedraw = true;
Menu = new MainMenu();
Menu.MenuItems.Add("&Font!", new EventHandler(MenuFontOnClick));
}
void MenuFontOnClick(object obj, EventArgs ea)
{
FontDialog dlg = new FontDialog();
dlg.Font = font;
if (dlg.ShowDialog() == DialogResult.OK)
{
font = dlg.Font;
Invalidate();
}
}
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)
{
SizeF sizef = grfx.MeasureString(strText, font);
Brush brush = new SolidBrush(clr);
grfx.DrawString(strText, font, brush, (cx - sizef.Width) / 2,
(cy - sizef.Height) / 2);
}
public float GetAscent(Graphics grfx, Font font)
{
return font.GetHeight(grfx) *
font.FontFamily.GetCellAscent(font.Style) /
font.FontFamily.GetLineSpacing(font.Style);
}
public float GetDescent(Graphics grfx, Font font)
{
return font.GetHeight(grfx) *
font.FontFamily.GetCellDescent(font.Style) /
font.FontFamily.GetLineSpacing(font.Style);
}
public float PointsToPageUnits(Graphics grfx, Font font)
{
float fFontSize;
if (grfx.PageUnit == GraphicsUnit.Display)
fFontSize = 100 * font.SizeInPoints / 72;
else
fFontSize = grfx.DpiX * font.SizeInPoints / 72;
return fFontSize;
}
}