Пример рисования форм

Начнем с небольшого примера, который иллюстрирует процесс рисования в главном окне приложения. Пример создан в среде Visual Studio.NET на языке C # как C # Windows приложение. В этом типе приложения автоматически создается экземпляр класса Form1, порожденный от класса System.Windows.Form, представляющий главное окно приложения. Поэтому весь дополнительный программный текст будет добавляться в описание именно этого класса.

В технологии. NET обычно говорят о приложениях, которые отображают разные элементы управления, и представляют собой произвольно размещаемую окно, представленное в виде прямоугольного объекта, занимающего некоторую область экрана. В этом контексте термин окна для рисования является наиболее уместным.

В данном примере просто создадим форму (окно) рисование в которой осуществляется в методе InitializeComponent (). Это не совсем удачный объект для рисования и в этом можно быстро убедиться, но он ввполне подходит для первоначального знакомства.

Для начала модифицируем текст программы в методе InitializeComponent () следующим образом:

private void InitializeComponent()

{

this.components = new System.ComponentModel.Container();

this.Size = new System.Drawing.Size(300,300);

this.Text = "Display At Startup"

this .BackColor = Color.White;

}

И добавим следующий текст в конструктор формы:

public Form1(){ InitializeComponent(); Graphics dc = this .CreateGraphics(); this .Show(); Pen BluePen = new Pen(Color.Blue, 3 ); dc.DrawRectangle(BluePen, 0,0,50,50 ); Pen RedPen = new Pen(Color.Red, 2 ); dc.DrawEllipse(RedPen, 0,50,80,60 );

}

Разберем написанное. Вначале мы установили цвет фона – в белый, чтобы соответствующее окно выглядело бы как обычное окно, на котором мы собираемся выводить графику. Мы поместили эту строку в метод InitializeComponent () для того, чтобы Visual Studio.NET установил цвет сразу же после его появления. Такого же эффекта можно бы добиться, если бы в режиме конструирования окна в окне свойств установить белый цвет фона. Метод же InitializeComponent() специально используется Visual Studio.NET для настройки внешнего вида формы. Если явно не установить белого цвета фона формы, то он останется равным значению, принятому по умолчанию и равным цвету диалоговых окон (этот цвет определяется в настройках Windows).

Следующее, что сделано в нашем примере, это создание объекта Graphics с помощью метода формы CreateGraphics (). Этот объект Graphics содержит контекст устройства OC Windows, необходимый для рисования. Созданный контекст устройства связан с дисплейным устройством и с нашей формой. Для его обозначения мы используем имя переменной с названием dc, отражая тот факт, что она в действительности отображает контекст графического устройства.

После этого мы вызываем метод Show () для того, чтобы отобразить окно на экране. Вообще говоря, это необходимо только для того, чтобы ускорить его отображение, поскольку невозможно никакого рисования до тех пор, пока окно не визуализировано (т.е. нет того, на чем надо рисовать).

И, накнец, мы рисуем прямоугольник с координатами (0, 0) и размерами 50 х 50 и эллипс с координатами (0, 50) и размерами 80 х 50. Координаты (0, 0) означают Х пикселей вправо и Y пикселей вниз от левого-верхнего угла клиентной области окна формы. Запись (х, у) является стандартной формой математического представления положения и очень подходит для нашего сслучая. Следует отметить, что мы используем методы DrawRectangle () и DrawEllipse () принимающие 5 аргументов. Первый параметр каждого из них – это экземпляр класса System.Drawing.Pen. Перо является одним из основных инструментальных средств рисования и содержит информацию о том, как будут вырисовываться линии на экране. В первом случае, параметры пера говорят, что линии должны быть синими с толщиной в три пикселя. Следующие четыре аргумента – это координаты. Для прямоугольника они представляют (х, у) координаты левого-верхнего угла прямоугольника и его ширину и высоту (все координаты выражаются в пикселях). Для эллипса эти числа означают то же самое кроме того, что рассматривается гепотетический прямоугольник, в котором размещается эллипс.

1.2. Обзор пространств имен GDI+

Платформа.NET предоставляет ряд пространств имен, посвященных визуализации двухмерной графики. В дополнение к базовой функциональности вы найдете также набор инструментов графики (цвета, шрифты, перья, кисти и т.п.), а также типы, выполняющие геометрические трансформации, сглаживание, смешивание палитр и поддержку печати документов. Все вместе эти пространства имен образуют средство.NET под названием GDI+, которое представляет собой управляемую альтернативу программному интерфейсу Win32 Graphical Device Interface (GDI). В табл.1 приведен общий обзор основных пространств имен GDI+.

Таблица 3.1. Основные пространства имен GDI+

Пространство имен Назначение
System.Drawing Это центральное пространство имен GDI+, определяющее многочисленные типы для базовой визуализации (шрифты, перья, базовые кисти и т.п.), а также мощный тип Graphics.
System.Drawing.Drawing2D Это пространство имен представляет типы, используемые для более развитой функциональности двухмерной векторной графики (например, градиентные кисти, концы перьев, геометрические трансформации и т.п.).
System.Drawing.Imaging Это пространство имен определяет типы, позволяющие манипулировать графическими изображениями (изменять палитру, извлекать метаданные изображения, манипулировать мета файлами и т.п.).
System.Drawing.Printing Это пространство имен определяет типы, позволяющие визуализировать изображения для печатных страниц, взаимодействовать с принтером, форматировать общее представление конкретного задания печати.
System.Drawing.Text Это пространство имен позволяет манипулировать коллекциями шрифтов.

Замечание! Все пространства имен GDI+ определены в сборке System.Drawing.dll. Хотя многие типы проектов Visual Studio автоматически устанавливают ссылки на эту библиотеку кода, при необходимости можно манипулировать ссылкой на System.Drawing.dll, используя диалоговое окно Add References (Добавление ссылок).


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



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