using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace testgrid ... { public partial class FontMenuForm : Form1 ...{ protected string strText = "Sample Text"; protected Font font = new Font("Times New Roman", 24, FontStyle.Italic); public FontMenuForm() ...{ Menu = new MainMenu(); Menu.MenuItems.Add("&Font", new EventHandler(MenuFontOnClick)); InitializeComponent(); } void MenuFontOnClick(object sender, EventArgs e) ...{ FontDialog dlg = new FontDialog(); dlg.Font = font; if (dlg.ShowDialog() == DialogResult.OK) ...{ font = dlg.Font; Invalidate(); } } protected override void DoPage(Graphics g, Color clr, int cx, int cy) ...{ //base.DoPage(g, clr, cx, cy); SizeF sizef = g.MeasureString(strText, font); Brush brush = new SolidBrush(clr); g.DrawString(strText, font, brush, (cx - sizef.Width) / 2, (cy - sizef.Height) / 2); } public float GetAscent(Graphics g, Font font) ...{ return font.GetHeight(g) * font.FontFamily.GetCellAscent(font.Style) / font.FontFamily.GetLineSpacing(font.Style); } public float GetDescent(Graphics g, Font font) ...{ return font.GetHeight(g) * font.FontFamily.GetCellDescent(font.Style) / font.FontFamily.GetLineSpacing(font.Style); } public float PointsToPageUnits(Graphics g, Font font) ...{ float fFontSize; if (g.PageUnit == GraphicsUnit.Display) ...{ fFontSize = 100 * font.SizeInPoints / 72; } else fFontSize = g.DpiX * font.SizeInPoints / 72; return fFontSize; } }} using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace testgrid ... { public partial class DropShadow : FontMenuForm ...{ const int iOffset = 10; public DropShadow() ...{ Text = "Drop Shadow"; Width *= 2; strText = "Shadow"; font=new Font("Times New Roman",108); InitializeComponent(); } protected override void DoPage(Graphics g, Color clr, int cx, int cy) ...{ //base.DoPage(g, clr, cx, cy); SizeF sizef = g.MeasureString(strText, font); float x = (cx - sizef.Width) / 2; float y = (cy - sizef.Height) / 2; g.Clear(Color.White); g.DrawString(strText, font, Brushes.Gray, x, y); g.DrawString(strText, font, Brushes.Black, x - iOffset, y - iOffset); } }}