- •Содержание
- •Введение в программирование под Windows
- •Событийно-управляемое программирование
- •Шаблон Windows-приложения
- •Класс Control
- •Элементы управления
- •Метка Label
- •Кнопка Button
- •Поле ввода TextBox
- •Меню MainMenu и ContextMenu
- •Флажок CheckBox
- •Переключатель RadioButton
- •Панель GroupBox
- •Список ListBox
- •Предварительные замечания о формах.
- •Класс Form
- •Диалоговые окна
- •Класс Application
- •Краткое введение в графику
- •Индивидуальные задания
- •Вариант 0
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Вариант 16
- •Вариант 17
- •Вариант 18
- •Вариант 19
- •Вариант 20
- •Пример выполнения варианта №0
Краткое введение в графику
Для вывода линий, геометрических фигур, текста и изображений необходимо создать экземпляр класса 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.FromImage( bm );
После создания объекта типа Graphics его можно применять для вывода линий, геометрических фигур, текста и изображений. Основными объектами, которые при этом используются, являются объекты классов:
Pen — рисование линий и контуров геометрических фигур;
Brush — заполнение областей;
Font — вывод текста;
Color — цвет.
В листинге 9.6 представлен код приложения, в котором на форму выводится линия, эллипс и текст. Вид формы приведен на рис. 9.13.
Рис. 9.13 - Форма с графикой
Листинг 9.6. Работа с графическими объектами
using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1() { InitializeComponent(); }
private void Form1_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 y = 20.0F;
g.DrawString(s, font, brush, x, y);
font.Dispose(); // 5
brush.Dispose(); // 6
}
}
}
}
Графические объекты потребляют системные ресурсы, поэтому рекомендуется вызывать для них метод освобождения ресурсов Dispose. Для упрощения работы с такими объектами в C# есть оператор using со следующим синтаксисом:
using ( выделение_ресурса ) оператор
Под ресурсом здесь понимается объект, который реализует интерфейс System.IDisposable, включающий метод Dispose. Код, использующий ресурс, вызовом этого метода сигнализирует о том, что ресурс больше не требуется. Если метод Dispose не был вызван, освобождение ресурса выполняется в процессе сборки мусора.
Оператор using неявным образом вызывает метод Dispose в случае успешного создания и использования объекта. Этот способ применен в операторах 1 и 2. В операторах 3 и 4 объекты создаются обычным образом, поэтому для них требуется явный вызов Dispose, что и происходит в операторах 5 и 6.
Как видно даже из этого простого листинга, для вывода графики требуется кропотливое изучение множества свойств и методов множества стандартных классов, описание которых, во-первых, очень объемное, во-вторых, невыносимо скучное, а в-третьих, не входит в задачу учебника по основам программирования.