Автор:
Неизвестно | добавлено: 10.01.2011, 18:41 | просмотров: 2050 (1+) | комментариев:
0 | рейтинг:
x0
Пример демонстрирует прорисовку на форме текста с двойными линиями сверху и снизу. Если вы хотите понять, как рисовать текст и линии, а также работать со шрифтами, то этот пример для вас.
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("Kbyte.Ru", f, Brushes.Black, textOrigin);
g.DrawString("Kbyte.Ru", f, Brushes.Black, nextLineOrigin);
int lineLen = 125;
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());
}
}