ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Шрифт:
Для иллюстрации работы с утилитарными типами GDI+ рассмотрите следующее консольное приложение (названное UtilTypes), в котором используется тип System.Drawing.Point (не забудьте установить ссылку на System.Drawing.dll).
Тип Rectangle(F)
Типы Rectangle, подобно Point, оказываются полезными во многих приложениях (и особенно в GUI-приложениях). Одним из наиболее полезных методов типа Rectangle является метод Contains. Этот метод позволяет выяснить, находится ли данный тип Point или Rectangle в рамках границ некоторого другого объекта. Позже в этой же главе вы увидите, как использовать этот метод для проверки попадания в область GDI-изображений. А пока что рассмотрите следующий простой пример.
Класс Region
Тип Region представляет внутреннюю часть геометрической фигуры. С учетом этого становится ясно, почему конструкторы класса Region требуют, чтобы вы предоставили им на вход некоторый уже существующий геометрический шаблон. Предположим, например, что вы создали прямоугольник размером 100x100 пикселей. Чтобы получить доступ к внутренней области прямоугольника, вы можете написать следующее.
Имея внутреннюю часть фигуры, вы можете манипулировать ею с использованием различных членов, наподобие следующих:
• Complement – изменяет данный объект Region на часть указанного графического объекта, не пересекающуюся с данным объектом Region;
• Exclude – изменяет данный объект Region на ту его часть, которая не пересекается с указанным графическим объектом;
• GetBounds – возвращает Rectangle(F), который представляет прямоугольный регион, ограничивающий данный объект Region;
• Intersect – изменяет данный объект Region на его пересечение с указанным графическим
объектом:• Transform – трансформирует данный объект Region с помощью указанного объекта Matrix;
• Union – изменяет данный объект Region на его объединение с указанным графическим объектом;
• Translate – сдвигает координаты данного объекта Region на указанную величину.
Надеюсь, что вы получили общее представление об этих координатных примитивах. Если же вам нужны подробности, обратитесь к документации .NET Framework 2.0 SDK.
Замечание. Типы Size и SizeF заслуживают небольшого дополнительного комментария. Каждый из этих типов определяет свойства Height (высота) и Width (ширина), а также набор перегруженных операций.
Исходный код. Проект UtilTypes размещен в подкаталоге, соответствующем главе 20.
Класс Graphics
Класс System.Drawing.Graphics – это "вход" в функциональные возможности визуализации GDI+. Этот класс не только представляет поверхность, на которой вы хотите разместить изображение (например, поверхность формы, поверхность элемента управления или область в памяти), но определяет также десятки членов, которые позволяют отображать текст, изображения (пиктограммы, точечные рисунки и т.д.) и самые разные геометрические формы. Частичный список членов данного класса представлен в табл. 20.3.
Кроме ряда методов визуализации, класс Graphics определяет дополнительные члены, позволяющие конфигурировать "состояние" объекта Graphics. С помощью присвоения подходящих значений свойствам, показанным в табл. 20.4, вы можете изменить текущие характеристики процесса визуализации.
Таблица 20.3. Члены класса Graphics
Методы | Описание |
---|---|
FromHdc FromHwnd FromImage | Статические методы, обеспечивающие возможность получения действительного объекта Graphics из данного изображения (например, пиктограммы, точечного рисунка и т.п.) или GUI-элемента |
Clear | Заполняет объект Graphics заданным цветом, выполняя в процессе заполнения очистку поверхности рисования |
DrawArc DrawBezier DrawBeziers DrawCurve DrawEllipse DrawIcon DrawLine DrawLines DrawPath DrawRectangle DrawRectangles DrawString | Эти методы используются для визуализации данного изображения или геометрического шаблона. Позже вы увидите, что методы DrawXXX требуют использования объектов Pen GDI+ |
FillEllipse FillPath FillPie FillPolygon FillRectangle | Эти методы иcпользуются для заполнения внутренности данной геометрической формы. Позже вы увидите, что методы DrawXXX требуют использования объектов Brush GDI+ |
Таблица 20.4. Свойства класса Graphics, сохраняющие состояние
Свойства | Описание |
---|---|
Clip ClipBounds VisibleClipBounds IsClipEmpty IsVisibleClipEmpty | Позволяют установить опции отсечения, используемые с текущим объектом Graphics |
Transform | Позволяет трансформировать "мировые координаты" (подробнее об этом будет говориться позже) |
PageUnit PageScale DpiX DpiY | Позволяют указать начало координат для операций визуализации, а также единицу измерения |
SmoothingMode PixelOffsetMode TextRenderingHint | Позволяют задать параметры гладкости геометрических объектов и текста |
CompositingMode CompositingQuality | Свойство CompositingMode задает режим визуализации: либо рисование поверх фона, либо сопряжение с фоном |
InterpolationMode | Указывает режим интерполяции данных между конечными точками |