Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Сеансы вывода графики. Класс Graphics




Цель работы

Изучить пространства имен и классы интерфейса графических устройств .NET, основные свойства и методы этих классов, применяемые при сеансах вывода графики. Научиться использовать классы GDI+ для рисования графиков функций.

Сведения из теории

2.1. Пространства имен GDI+

Аббревиатура GDI расшифровывается как GraphicsDeviceInterface (интерфейс графического устройства). Этим термином обозначается подсистема Windows, предназначенная для вывода графических изображений (а Windows вся основана на использовании графики) на экран и на принтер. GDI+ – это новый набор программных интерфейсов, используемых в .NET.

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

 

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

 

Пространство имен System.Drawing. Служебные типы

Большинство типов для работы с графикой находятся в пространстве имен System.Drawing. Некоторые наиболее важные типы этого пространства имен представлены в таблице:

 

Тип Описание
Bitmap Содержит файл изображения и определяет набор методов для выполнения операций с этим изображением
Brush Brushes SolidBrush SystemBrushes TextureBrush Объекты Brush (кисть) используются для заполнения пространства внутри геометрических фигур (прямоугольников, эллипсов, многоугольников). Тип Brush – абстрактный базовый класс, остальные – производные от него
BufferedGraphics Новый тип .NET 2.0, обеспечивающий графический буфер для двойной буферизации, которая используется для уменьшения или полного исключения влияния эффекта мелькания, возникающего при перерисовке изображений
Color SystemColors Определяют ряд статических свойств, доступных для чтения и используемых для получения нужного цвета при использовании различных перьев и кистей
Font FontFamily Тип Font содержит характеристики шрифта (имя, начертание, размер и т.д.). FontFamily представляет набор шрифтов, которые относятся к одному семейству, но имеют небольшие отличия
Graphics Представляет реальную поверхность для изображения, а также предлагает ряд методов для вывода текста, изображений и геометрических фигур
Icon SystemIcons Представляют пользовательские и системные иконки
Image ImageAnimator Image – это абстрактный базовый класс для поддержки возможностей типов Bitmap, Icon и Cursor. Тип ImageAnimator обеспечивает показ изображений через указанные интервалы времени
Pen Pens SystemPens Pen – это класс, используемый для построения линий и кривых. Тип Pen определяет ряд статических свойств, позволяющий получить перо с заданными свойствами (например, с заданным цветом)
Point PointF Эти структуры обеспечивают работу с координатами точки. Point работает со значениями типа int, а PointF – с типом float
Rectangle

Структуры, предназначенные для работы с прямоугольными областями (int/float)

RectangleF
Size

Эти структуры обеспечивают работу с размерами: высотой и шириной (int/float)

SizeF
StringFormat Используется для форматирования текста (выравнивание, междустрочный интервал и т.д.)
Region Определяет область, занятую геометрической фигурой

 

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

Для передачи методам подобной информации в пространстве имен System.Drawing предусмотрены служебные типы Point, Rectangle, RegionиSize. Основные свойства данных типов приведены в таблице:

 

Структура Свойство Назначение свойства

Point

PointF

X Координата x
Y Координата y

Size

SizeF

Width Ширина
Height Высота

Rectangle

RectangleF

Left Координата xлевой грани
Right Координата xправой грани
Top Координата y верхней грани
Bottom Координата y нижней грани
Width Ширина прямоугольника
Height Высота прямоугольника
X Аналогично Left
Y Аналогично Top
Location Левый верхний угол
Size Размер прямоугольника

 

Сеансы вывода графики. Класс Graphics

Работа с графическими устройствами, такими, как принтер, дисплей в Windows вообще и в .NET в частности является аппаратно-независимой. Это значит, что при программировании под Windows средств прямого доступа к аппаратуре нет. Все взаимодействие с ней производится через специальные методы. При этом для вывода на графические устройства используется один и тот же набор функций.

Для того чтобы определить, на какое устройство осуществляется вывод (весь экран, клиентская область окна, принтер и т.д.), используется понятиеконтекста устройства(devicecontext). Это объект класса Graphics, содержащий все методы для построения изображения в окне. Кроме того, он содержит данные о графическом устройстве вывода. Для осуществления вывода создается контекст устройства и тем самым определяется конкретное устройство для вывода. А далее к созданному объекту можно применять все имеющиеся методы класса Graphics.

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

 

Метод Описание
FromHdc()

Статические методы, обеспечивающие возможность получения объекта Graphics из элемента управления или изображения

FromHwnd()
FromImage()
Clear() Закрашивает объект Graphics заданным цветом
DrawArc() Рисует сегмент круга между заданными углами
DrawBezier() Рисует гладкую кривую через заданные 4 точки
DrawBeziers() Рисует гладкую кривую через заданный массив точек
DrawCurve() Рисует гладкую кривую через заданный массив точек
DrawEllipse() Рисует эллипс
DrawIcon() Рисует изображение с заданной иконкой
DrawLine() Рисует одиночную прямую линию
DrawLines() Рисует серию ломаных линий по массиву точек
DrawPie() Рисует сектор эллипса
DrawPath() Рисует замкнутый контур на основе серии точек и кривых
DrawRectangle() Рисует прямоугольник
DrawRectangles() Рисует несколько прямоугольников
DrawString() Рисует текст
FillEllipse() Рисует закрашенный эллипс
FillPath() Рисует закрашенный замкнутый контур
FillPie() Рисует закрашенный сектор эллипса
FillPolygon() Рисует закрашенный замкнутый контур по серии точек
FillRectangle() Рисует закрашенный прямоугольник

 

Класс Graphics не допускает непосредственного создания своего объекта с помощью ключевого слова new, поскольку этот класс не имеет открытых конструкторов. Поэтому контекст устройства можно только получить из элемента управления или изображения, а затем ссылку на него присвоить объекту класса Graphics. Например:

GraphicsG = PictureBox1.CreateGraphics();

2.4. Системы координат GDI+

Система координат по умолчанию использует в качестве единицы измерения пиксели, а в качестве исходной точки – верхний левый угол. Координата X определяет смещение вправо, а координата Y – смещение вниз.

Разница между измерением положения относительно верхнего левого угла документа и относительно верхнего левого угла экрана настолько важна, что в GDI+ предусмотрены специальные наименования для этих координатных систем:

- мировые координаты (worldcoordinates) – указывают позицию точки, измеренную в пикселях от левого верхнего угла документа;

- страничные координаты (pagecoordinates) – указывают позицию точки, измеренную в пикселях от левого верхнего угла клиентской области;

- координаты устройства (devicecoordinates) – подобны страничным координатам за исключением того, что в качестве единиц измерения используются не пиксели, а другие единицы измерения, определяемые пользователем через свойство PageUnit класса Graphics (дюймы, миллиметры и т.д.).

Как было сказано выше, по умолчанию точкой отсчета для системы координат является верхний левый угол клиентской области окна. Однако бывают ситуации, когда удобнее, чтобы точка отсчета была расположена в другом месте. Для этого используется метод TranslateTransform() класса Graphics. Например, установить точку отсчета в положение 100, 100 относительно системы координат по умолчанию можно следующим образом:

g.TranslateTransform(100, 100);

 










Последнее изменение этой страницы: 2018-06-01; просмотров: 214.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...