Мой Kbyte.Ru
Рассылка Kbyte.Ru
Группы на Kbyte.Ru
Партнеры Kbyte.Ru
Реклама
Сделано руками
Сделано руками
> Исходные коды - Неизвестно -

C# - Графика

Все примеры / Мультимедиа / Графика

Прорисовка текста с линиями сверху и снизу

Автор: Неизвестно | добавлено: 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());
  }
}
Файлы Файл примера.zip (22,71 Кб)
Об авторе

Неизвестно

Нет информации об авторе...
Неизвестно
Последние комментарии (всего: 0)

Добавлять комментарии могут только зарегистрированные пользователи сайта.
Если у Вас уже есть учетная запись на Kbyte.Ru, пройдите процедуру авторизации OpenID.
Если Вы еще не зарегистрированы на Kbyte.Ru - зарегистрируйтесь.


Нет комментариев...

Авторизация
 
OpenID
Зарегистрируйся и получи 10% скидку на добавление своего сайта в каталоги! Подробнее »
Поиск по сайту
Люди на Kbyte.Ru
Реклама
Счетчики