Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LR_4_Tekhnologia_programmirovania.docx
Скачиваний:
37
Добавлен:
20.03.2016
Размер:
136.7 Кб
Скачать

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

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

Для того чтобы определить, на какое устройство осуществляется вывод (весь экран, клиентская область окна, принтер и т.д.), используется понятие контекста устройства (device context). Это объект класса 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. Например:

Graphics G = PictureBox1.CreateGraphics();

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

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

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

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

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

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

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

g.TranslateTransform(100, 100);