Краткое введение в графику

Для вывода линий, геометрических фигур, текста и изображений необходимо соз­дать экземпляр класса Graphics, описанного в пространстве имен System.Drawing. Существуют различные способы создания этого объекта.

Первый способ состоит в том, что ссылку на объект Graphics получают из пара­метра PaintEventArgs, передаваемого в обработчик события Paint, возникающего при необходимости прорисовки формы или элемента управления:

private void Form1_Paint(object sender, PaintEventArgs e)

{

Graphics g = e.Graphics; // использование объекта

}

Второй способ — использование метода CreateGraphics, описанного в классах

формы и элемента управления:

Graphics g;

g = this. CreateGraphics();

Третий способ — создание объекта с помощью объекта-потомка Image. Этот спо­соб используется для изменения существующего изображения:

Bitmap bm = new Bitmap("d:\\picture.bmp");

Graphics g = Graphics.Fromlmage(bm);

После создания объекта типа Graphics его можно применять для вывода линий,

геометрических фигур, текста и изображений. Основными объектами, которые

при этом используются, являются объекты классов:

□ Pen — рисование линий и контуров геометрических фигур;

□ Brush — заполнение областей;

□ Font — вывод текста;

□ Color — цвет.

В листинге 14.6 представлен код приложения, в котором на форму выводятся линия, эллипс и текст. Вид формы приведен на рис. 14.13.

Листинг 14.6. Работа с графическими объектами

using System;

using System.Drawing;

using System.Windows.Forms;

namespace WindowsApplication1

{

public partial class Form1: Form

{

public Form1() { InitializeComponent(); }

private void Forml_Paint(object sender, PaintEventArgs e)

{

using (Graphics g = e.Graphics) // 1

{

using (Pen pen = new Pen(Color.Red)) // 2

{

g.DrawLine(pen, 0, 0, 200, 100);

g.DrawEllipse(pen, new Rectangle(50, 50, 100, 150));

}

string s = "Sample Text";

Font font = new Font("Arial", 18); // 3

SolidBrush brush = new SolidBrush(Color.Black); //4

float x = 100.0F;

float у = 20.0F;

g.DrawString(s, font, brush, x, у);

font.Dispose(); // 5

brush.Dispose(); // 6

}

}

}

}

Рис. 14.13. Форма с графикой

Графические объекты потребляют системные ресурсы, поэтому рекомендуется вызывать для них метод освобождения ресурсов Dispose. Для упрощения работы с такими объектами в С# есть оператор using со следующим синтаксисом:

using (выделение_ресурса) оператор

Ключевое слово using используется в С# в двух не связанных между собой случаях: как директива и как оператор. Директива using была рассмотрена ранее.

Под ресурсом здесь понимается объект, который реализует интерфейс System. IDisposable, включающий метод Dispose. Код, использующий ресурс, вызовом этого метода сигнализирует о том, что ресурс больше не требуется. Если метод Dispose не был вызван, освобождение ресурса выполняется в процессе сборки мусора.

Оператор using неявным образом вызывает метод Dispose в случае успешного создания и использования объекта. Этот способ применен в операторах 1 и 2.

В операторах 3 и 4 объекты создаются обычным образом, поэтому для них требу­ется явный вызов Dispose, что и происходит в операторах 5 и 6. Как видно даже из этого простого листинга, для вывода графики требуется кропот­ливое изучение множества свойств и методов множества стандартных классов, описание которых, во-первых, очень объемное, во-вторых, невыносимо скучное, а в-третьих, не входит в задачу учебника по основам программирования.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: