* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна!
Объект Graphics
8 февраля 2009
Ключевую роль в формировании и отображении графики играет класс Graphics из пространства имен System.Drawing. Объект Graphics представляет область для рисо- вания, расположенную на поверхности графического элемента, — формы, элемен- та управления или объекта Image. Co всеми этими сущностями связан объект Graphics, который позволяет рисовать на их поверхности и отображает все графи- ческие элементы, размещенные на ней.
Поскольку объект Graphics должен быть связан с графическим элементом, его нельзя создать, вызвав конструктор этого класса напрямую. Вместо этого следует вызвать конструктор объекта Graphics из графического элемента. Любой класс-по- томок Control (включая Form) поддерживает метод CrealeGraphics. Последний воз- вращает ссылку на объект Graphics, связанный с данным элементом управления. Следующий пример демонстрирует получение доступа к объекту Graphics формы ту Form: Visual Basic .NET Dim my/Graphics as System. Drawing. Graphics myGraphics = myForm.CreateGraphicsO Visual C# System.Drawing.Graphics myGraphics; myGraphics = myForm.CreateGraphicsO; В результате исполнения этого кода создается объект Graphics, которым можно пользоваться для отображения графики на поверхности формы. При работе с изображениями метод Graphics. From Image позволяет создать объект Graphics, связанный с заданным объектом /mage. Это статический метод, поэтому для его вызова ссылка на объект Graphics не требуется. Объектом Image считается любой объект-потомок класса Image, например Bitmap. Вот как создать из файла объект Bitmap и получить связанный с ним объект Graphics: Visual Basic .NET Dim mylmage As New Bitmap("C:\myImage.bmp") Dim myGraphics As System.Drawing.Graphics myGraphics = Graphics. Fromlmage(rnylmage) Visual C# Bitmap mylmage = new Bitmap("C:\\myImage. bmp"}; System.Drawing.Graphics myGraphics; myGraphics = Graphics. Fromlmage(rnylmage); Заметьте, что даже невидимый объект Image позволяет создать объект Graphics и манипулировать им, Координаты Формирование изображения происходит в области, заданной границами элемента управления. Здесь действует двухмерная система координат, каждая точка которой задана парой значений — X и Y. По умолчанию начальная точка системы коорди- нат (0,0) каждого элемента находится в его верхнем левом углу, а координаты зада- ются в пикселах. Пространство имен System. Drawing содержит ряд структур (табли- ца 7-2), описывающих точку или область в данной системе координат. Таблица 7-2. Структуры, описывающие координаты точек и фигур Имя Описание Point Представляет точку с координатами X и Y, заданными значениями типа Integer (Int) PointF Представляет точку с координатами Хн Y, заданными значениями типа Single (float) Size Представляет прямоугольную область, размеры которой заданы парой значений Height и Width типа Integer SizeF Предстаатяет прямоугольную область, размеры которой заданы парой значений Height и Width типа Single (float) Rectangle Представляет прямоугольную область, границы которой заданы значениями Top, Bottom, Left и Right типа Integer (Int) RectangleF Представляет прямоугольную область, границы которой заданы значениями Top, Bottom, Left и Right типа Single (float) Как видно из таблицы 7-2, существует два типа подобных структур: те, что при- нимают целочисленные значения, и те, что используют числа с плавающей точкой. Структуры Point, Size и Rectangle первого типа разрешается явно преобразовывать в соответствующие структуры второго типа. Чтобы выполн ить такое преобразование, следует явно преобразовать каждую координату из типа с плавающей точкой в це- лочисленный тип, например: Visual Basic .NET Dim myPoint As Point Dim myPointF As New PointF(13.5,33.21) nyPoint = New Point{CInt(myPointF.X), Clnt(myPointF.Y)) Visual C# Point myPoirit; PointF myPointF = new PointF(13.5F,33.21F); myPoint = new Point<(int)myPointF.X, (int)myPointF.Y); Обратите внимание на важную особенность структур Size и Rectangle: обе они определяют прямоугольную часть клиентской области, однако Size определяет лишь размер, но не положение прямоугольника, тогда как структура Rectangle задает ре- альное положение прямоугольника в клиентской области. Для создания Rectangle требуются две структуры: Size и Point, указывающие положение верхнего левого угла прямоугольника: Visual Basic .NET Dim mydrigin As New Point(10, 10) Dim mySize As New Size(20, 20} Создать прямоугольник размером 20 на 20 пикселов, верхний левый угол которого расположен в точке с координатами (10,10). Dim inyRectangle As New Rectangle(myOrigin, mySize) Visual C# Point myOrigin = new Point(10, 10); Size mySize = new Size(20r 20); // Создать прямоугольник размером 20 на 20 пикселов, верхний // левый угол которого расположен в точке с координатами (10,10), Rectangle myRectangle - new Rectangle(myOrigin, mySize); Рисование фигур Объект Graphics инкапсулирует множество методов для рисования на экране про- стых и сложных фигур. Существует две основных разновидности этих методов. К первой относятся методы, имена которых начинается с «Draw» (таблица 7-3). Эти методы используются для рисования прямых, дуг и контуров фигур. Другая разно- видность методов, имена которых начинается с «Fill» (таблица 7-4), служит для ри- сования залитых фигур — прямоугольников, эллипсов и многоугольников. Эти методы принимают различные комбинации параметров, определяющих раз- меры и положение отображаемых фигур. Кроме того, им требуется объект, форми- рующий изображение фигуры, Для контурных фигур это Реп, а для закрашенных — Brush. Таблица 7-3. Методы для рисования контурных фигур Имя Описание DrawArc Рисует дугу, представляющую часть эллипса DrawBezier Рисует кривую Безье DrawBeziers Рисует несколько кривых Безье DrawClosedCurve Проводит через несколько точек замкнутую кривую DrawCurve Проводит через несколько точек незамкнутую кривую DrawEliipse Рисует эллипс, вписанный в прямоугольник DrawLine Соединяет две точки линией DrawLines Соединяет линиями несколько точек DrawPafh Рисует заданный объект GraphicsPath, представляющий сложную фигуру DrawPie Рисует сектор окружности DrawPolygon Рисует многоугольник по заданному числу точек DrawRectangle Рисует прямоугольник Draw Rectangles Рисует несколько прямоугольников Таблица 7-4. Методы для рисования закрашенных фигур Имя Описание FHICIosedCurve Рисует замкнутую кривую, заданную массивом точек, и закрашивает полученную фигуру Fill Ellipse Рисует закрашенный эллипс Fill Path Рисует и закрашивает объект Graphics Path, представляющий сложную фигуру Fil/Pie Рисует закрашенный сектор ПИ Polygon Рисует многоугольник, заданный массивом точек, и закрашивает его HHRectangte Рисует закрашенный прямоугольник Fill Rectangles Рисует несколько закрашенных прямоугольников Fill Region Рисует и закрашивает объект Region, обычно представляющий сложную фигуру