
- •Объекты Graphics и Drawing в Windows Forms
- •Обзор графических возможностей
- •Интерфейс управляемых классов
- •Три категории графических служб
- •Двухмерная векторная графика
- •Рисунки
- •Типографская разметка
- •Структура интерфейса Graphics
- •Важные классы
- •Прямые и кривые линии и фигуры
- •Общие сведения о векторной графике
- •Методы рисования с помощью графических объектов
- •Рисование линии
- •Создание объекта Pen
- •Штриховые линии и завершения отрезков
- •Рисование прямоугольника
- •Рисование эллипса
- •Рисование дуги
- •Рисование многоугольника
- •Физические и математические сплайны
- •Рисование сплайнов Безье
- •Применение контуров
- •Сплошные кисти
- •Штриховые кисти
- •Текстурные кисти
- •Градиентные кисти
- •Управляемый интерфейс для кривых
- •Использование областей
- •Задание области обрезки
- •Сглаживание прямых и кривых линий
- •Неровности
- •Сглаживание
- •Работа с растровыми и векторными изображениями с использованием классов Image, Bitmap и Metafile
- •Типы точечных рисунков
- •Форматы графических файлов
- •Форматы метафайлов
- •Типы файлов и клонирование
- •Варианты DrawImage
- •Системы координат и преобразования
- •Типы систем координат
- •Преобразования и системы координат
- •Матричное представление преобразований
- •Составные преобразования
- •Глобальные и локальные преобразования
- •Глобальные преобразования
- •Локальные преобразования
- •Использование управляемых графических классов Приступая к программированию графики
- •Создание объектов Graphics для рисования
- •Создание объекта Graphics
- •PaintEventArgs в обработчике события Paint
- •Получение ссылки на объект Graphics из объекта PaintEventArgs в событии Paint
- •Рисование фигур и изображений и управление ими
- •Создание фигурной формы Windows Forms
- •Компиляция кода
- •Копирование пикселов для уменьшения эффекта дрожания изображения в Windows Forms
- •Компиляция кода
- •Рисование линий и фигур с помощью пера
- •Рисование линий с помощью пера
- •Компиляция кода
- •Рисование прямоугольников с помощью пера
- •Компиляция кода
- •Задание толщины и выравнивания пера
- •Изменение толщины пера
- •Изменение выравнивания пера
- •Создание вложенного пера
- •Рисование линий с наконечниками
- •Компиляция кода
- •Соединение линий
- •Компиляция кода
- •Рисование пользовательских пунктирных линий
- •Компиляция кода
- •Рисование линии с текстурным заполнением
- •Компиляция кода
- •Использование кисти для заливки фигур
- •Заливка фигуры сплошным цветом
- •Компиляция кода
- •Штриховая заливка фигуры
- •Компиляция кода
- •Заливка фигуры текстурой, созданной на основе изображения
- •Компиляция кода
- •Мозаичное заполнение фигуры заданным изображением
- •Мозаичное заполнение изображением
- •Горизонтальное зеркальное преобразование изображения при мозаичном заполнении
- •Вертикальное зеркальное преобразование изображения при мозаичном заполнении
- •Мозаичное заполнение с зеркальным отображением изображения по горизонтали и вертикали
- •Заливка фигур с помощью градиентной кисти
- •Создание линейного градиента
- •Использование горизонтальных линейных градиентов
- •Настройка линейных градиентов
- •Создание диагональных линейных градиентов
- •Создание градиента вдоль контура
- •Заливка эллипса с использованием градиента контура
- •Указание точек на границе
- •Настройка градиента контура
- •Настройка с интерполяцией
- •Задание центральной точки
- •Применение гамма-коррекции к градиенту
- •Компиляция кода
- •Загрузка и отображение метафайлов
- •Компиляция кода
- •Обрезка и масштабирование изображений
- •Компиляция кода
- •Поворот, отражение и наклон изображений
- •Компиляция кода
- •Использование режима интерполяции для управления качеством изображений при масштабировании
- •Компиляция кода
- •Создание эскизов изображений
- •Компиляция кода
- •Повышение производительности за счет отключения автоматического масштабирования
- •Компиляция кода
- •Чтение метаданных изображения
- •Значение
- •Пример Описание
- •Компиляция кода
- •Создание растрового изображения во время выполнения
- •Компиляция кода
- •Извлечение связанного с файлом значка в Windows Forms
- •Компиляция кода
- •Альфа-смешение цвета для линий и заливок
- •Рисование непрозрачных и полупрозрачных линий
- •Компиляция кода
- •Рисование непрозрачными и полупрозрачными кистями
- •Компиляция кода
- •Использование режима комбинирования для управления альфа-смешением
- •Компиляция кода
- •Использование матрицы цветов для задания значений прозрачности в изображениях
- •Компиляция кода
- •Шрифты и текст
- •Разработка шрифтов и их семейств
- •Компиляция кода
- •Рисование текста в указанной позиции
- •Рисование строки текста с использованием gdi
- •Компиляция кода
- •Многострочный вывод текста в прямоугольнике
- •Рисование текста с переносом по словам в прямоугольнике с помощью gdi
- •Компиляция кода
- •Рисование текста с использованием gdi
- •Компиляция кода
- •Выравнивание рисуемого текста
- •Рисование центрированного текста с использованием gdi (DrawText)
- •Компиляция кода
- •Вывод текста по вертикали
- •Компиляция кода
- •Установка позиций табуляции для выводимого текста
- •Компиляция кода
- •Перебор установленных шрифтов
- •Компиляция кода
- •Получение метрик шрифтов
- •Компиляция кода
- •Сглаживание текста
- •Компиляция кода
- •Построение и рисование кривых
- •Рисование фундаментальных сплайнов
- •Рисование фундаментального сплайна в форме колокола
- •Рисование замкнутого фундаментального сплайна
- •Изменение изгиба фундаментального сплайна
- •Компиляция кода
- •Рисование отдельного сплайна Безье
- •Компиляция кода
- •Рисование последовательности сплайнов Безье
- •Компиляция кода
- •Построение и рисование контуров
- •Создание изображений из прямых и кривых линий и геометрических фигур
- •Компиляция кода
- •Заливка открытых фигур
- •Компиляция кода
- •Спрямление участков кривой
- •Спрямление контура
- •Использование объемного преобразования
- •Различные типы преобразований
- •Значение порядка преобразований
- •Примеры составных преобразований
- •Использование графических контейнеров
- •Управление состоянием объекта Graphics
- •Состояние объекта Graphics
- •Параметры качества
- •Преобразования
- •Область обрезки
- •Использование вложенных графических контейнеров
- •Преобразования во вложенных контейнерах
- •Обрезка во вложенных контейнерах
- •Параметры качества во вложенных контейнерах
- •Различные уровни вложенных контейнеров
- •Использование областей
- •Проверка нахождения указателя мыши в заданной области
- •Компиляция кода
- •Обрезка изображения по границам области обрезки
- •Компиляция кода
- •Получение списка установленных кодировщиков
- •Компиляция кода
- •Получение списка установленных декодеров
- •Компиляция кода
- •Компиляция кода
Структура интерфейса Graphics
Интерфейс управляемых классов GDI+ содержит около 60 классов, 50 перечислений и 8 структур. Класс Graphics является основой интерфейса GDI+, этот класс непосредственно выполняет рисование прямых и кривых линий, геометрических фигур, вывод рисунков и текста.
Важные классы
Многие классы работают совместно с классом Graphics. Например, метод DrawLine получает объект Pen, содержащий атрибуты рисуемой линии, такие как цвет, ширина, наличие или отсутствие пунктира и т. п. Метод FillRectangle может получать указатель на объект LinearGradientBrush, работающий совместно с объектом Graphics и реализующий заполнение прямоугольника постепенно меняющимся цветом. Объекты Font и StringFormat определяют то, как объект Graphics выводит на экран текст. Объект Matrix обеспечивает выполнение различных действий по объемным преобразованиям объекта Graphics, которые используются для вращения, масштабирования и отражения рисунков.
Интерфейс GDI+ предоставляет несколько структур, таких как Rectangle, Point и Size, которые используются для хранения графических данных. Некоторые классы также используются, в основном, как структурированные типы данных. Например, класс BitmapData является вспомогательным хранилищем данных для класса Bitmap, а класс PathData является вспомогательным хранилищем данных для класса GraphicsPath.
В GDI+ определены несколько перечислений, которые являются коллекциями связанных констант. Например, перечисление LineJoin содержит элементы Bevel, Miter и Round, определяющие стили соединения линий.
Управляемый код GDI+
GDI+ — это часть операционной системы Windows XP, предоставляющая средства для обработки двухмерной графики, рисунков и для решения типографских задач. GDI+ является более совершенной версией GDI (интерфейс GDI (интерфейс), входящий в предыдущие версии Windows) благодаря добавлению новых средств и оптимизации существующих.
Интерфейс управляемых классов GDI+ (набор оберток) является частью .NET Framework, среды для сборки, развертывания и запуска веб-служб XML и других приложений.
Lines, Curves, and Shapes
The vector graphics portion of GDI+ is used to draw lines, draw curves, and to draw and fill shapes.
Vector Graphics Overview
GDI+ draws lines, rectangles, and other shapes on a coordinate system. You can choose from a variety of coordinate systems, but the default coordinate system has the origin in the upper-left corner with the x-axis pointing to the right and the y-axis pointing down. The unit of measure in the default coordinate system is the pixel.
Прямые и кривые линии и фигуры
Часть интерфейса GDI+, реализующая функции векторной графики, используется для рисования прямых и кривых линий, а также для рисования и заливки фигур.
Общие сведения о векторной графике
Рисование линий, прямоугольников и других фигур с использованием интерфейса GDI+ происходит в некоторой системе координат. Пользователь может выбрать одну из многих реализованных систем координат, но по умолчанию используется плоская декартова система координат, начало координат которой расположено в верхнем левом углу экрана, ось X направлена вправо, а ось Y — вниз. Единицей измерения в заданной по умолчанию системе координат является точка (минимальный элемент изображения).
The Building Blocks of GDI+
A computer monitor creates its display on a rectangular array of dots called picture elements or pixels. The number of pixels that appear on the screen varies from one monitor to the next, and the number of pixels that appear on an individual monitor can usually be configured to some extent by the user.
When you use GDI+ to draw a line, rectangle, or curve, you provide certain key information about the item to be drawn. For example, you can specify a line by providing two points, and you can specify a rectangle by providing a point, a height, and a width. GDI+ works in conjunction with the display driver software to determine which pixels must be turned on to show the line, rectangle, or curve. The following illustration shows the pixels that are turned on to display a line from the point (4, 2) to the point (12, 8).
Over time, certain basic building blocks have proven to be the most useful for creating two-dimensional pictures. These building blocks, which are all supported by GDI+, are given in the following list:
Lines
Rectangles
Ellipses
Arcs
Polygons
Cardinal splines
Bezier splines
Структурные элементы интерфейса GDI+
------------
Изображение на мониторе компьютера формируется как прямоугольный массив точек, являющихся минимальными элементами изображения. Количество точек, отображаемых на экране, зависит от типа монитора. Количество точек, отображаемых на экране конкретного монитора, может быть изменено пользователем в определенных пределах.
--------
При использовании интерфейса GDI+ для рисования линии, прямоугольника или формы необходимо указывать определенные ключевые данные, задающие параметры рисуемого элемент. Например, отрезок задается координатами двух точек, а прямоугольник — точкой, шириной и высотой. Интерфейс GDI+ взаимодействует с программным обеспечением драйвера экрана, чтобы определить, какие точки экрана должны быть высвечены, чтобы на экране возникло изображение линии, прямоугольника или кривой. На приведенном ниже рисунке показаны точки, высвечиваемые, чтобы отобразить отрезок прямой линии от точки с координатами (4, 2) до точки с координатами (12, 8).
------------------
За время развития компьютерной графики были выделены геометрические фигуры, наиболее полезные при создании двухмерных изображений. Все эти элементы поддерживаются интерфейсом GDI+, ниже приведен их полный список.
Линии
Прямоугольники
Эллипсы
Дуги
Многоугольники
Фундаментальные сплайны
Сплайны Безье
Methods For Drawing with a Graphics Object
The Graphics class in GDI+ provides the following methods for drawing the items in the previous list: DrawLine, DrawRectangle, DrawEllipse, DrawPolygon, DrawArc, DrawCurve (for cardinal splines), and DrawBezier. Each of these methods is overloaded; that is, each method supports several different parameter lists. For example, one variation of the DrawLine method receives a Pen object and four integers, while another variation of the DrawLine method receives a Pen object and two Point objects.
The methods for drawing lines, rectangles, and Bézier splines have plural companion methods that draw several items in a single call: DrawLines, DrawRectangles, and DrawBeziers. Also, the DrawCurve method has a companion method, DrawClosedCurve, that closes a curve by connecting the ending point of the curve to the starting point.
All of the drawing methods of the Graphics class work in conjunction with a Pen object. To draw anything, you must create at least two objects: a Graphics object and a Pen object. The Pen object stores attributes, such as line width and color, of the item to be drawn. The Pen object is passed as one of the arguments to the drawing method. For example, one variation of the DrawLine method receives a Pen object and four integers as shown in the following example, which draws a rectangle with a width of 100, a height of 50 and an upper-left corner of (20, 10):
myGraphics.DrawRectangle(myPen, 20, 10, 100, 50); |