
- •Объекты 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 and Drawing in Windows Forms 10
Overview of Graphics 10
Managed Class Interface 10
Объекты Graphics и Drawing в Windows Forms 10
Обзор графических возможностей 10
Интерфейс управляемых классов 10
Three Categories of Graphics Services 11
2-D Vector Graphics 11
Imaging 11
Typography 11
Три категории графических служб 11
Двухмерная векторная графика 11
Рисунки 11
Типографская разметка 11
Structure of the Graphics Interface 12
Important Classes 12
About GDI+ Managed Code 12
Структура интерфейса Graphics 12
Важные классы 12
Управляемый код GDI+ 12
Lines, Curves, and Shapes 13
Vector Graphics Overview 13
Прямые и кривые линии и фигуры 13
Общие сведения о векторной графике 13
The Building Blocks of GDI+ 14
Структурные элементы интерфейса GDI+ 14
Methods For Drawing with a Graphics Object 15
Методы рисования с помощью графических объектов 15
Pens, Lines, and Rectangles in GDI+ 16
Drawing a Line 16
Constructing a Pen 16
Перья, линии и прямоугольники в GDI+ 16
Рисование линии 16
Создание объекта Pen 16
Dashed Lines and Line Caps 17
Drawing a Rectangle 17
Штриховые линии и завершения отрезков 17
Рисование прямоугольника 17
Ellipses and Arcs in GDI+ 18
Drawing an Ellipse 18
Drawing an Arc 18
Эллипсы и дуги в GDI+ 18
Рисование эллипса 18
Рисование дуги 18
Polygons in GDI+ 19
Drawing a Polygon 19
Многоугольники в GDI+ 19
Рисование многоугольника 19
Cardinal Splines in GDI+ 20
Physical and Mathematical Splines 20
Фундаментальные сплайны в GDI+ 20
Физические и математические сплайны 20
Bézier Splines in GDI+ 21
Сплайны Безье в GDI+ 21
Drawing Bézier Splines 22
Рисование сплайнов Безье 22
Graphics Paths in GDI+ 23
Using a Path 23
Контуры в GDI+ 23
Применение контуров 23
Brushes and Filled Shapes in GDI+ 26
Solid Brushes 26
Hatch Brushes 26
Кисти и закрашенные фигуры в GDI+ 26
Сплошные кисти 26
Штриховые кисти 26
Texture Brushes 27
Gradient Brushes 27
Текстурные кисти 27
Градиентные кисти 27
Open and Closed Curves in GDI+ 29
Managed Interface for Curves 29
Замкнутые и незамкнутые кривые в GDI+ 29
Управляемый интерфейс для кривых 29
Regions in GDI+ 31
Using Regions 31
Области в GDI+ 31
Использование областей 31
Restricting the Drawing Surface in GDI+ 32
Clipping with Regions 32
Ограничение поверхности для рисования в GDI+ 32
Задание области обрезки 32
Antialiasing with Lines and Curves 33
Aliasing 33
Antialiasing 33
Сглаживание прямых и кривых линий 33
Неровности 33
Сглаживание 33
Images, Bitmaps, and Metafiles 35
Types of Bitmaps 35
Работа с растровыми и векторными изображениями с использованием классов Image, Bitmap и Metafile 35
Типы точечных рисунков 35
Graphics File Formats 38
BMP 38
Graphics Interchange Format (GIF) 38
Joint Photographic Experts Group (JPEG) 38
Форматы графических файлов 38
BMP 38
GIF (Graphics Interchange Format) 38
JPEG (Joint Photographic Experts Group) 38
Exchangeable Image File (EXIF) 39
EXIF (Exchangeable Image File) 39
Portable Network Graphics (PNG) 40
Tag Image File Format (TIFF) 40
PNG (Portable Network Graphics) 40
TIFF (Tag Image File Format) 40
Metafiles in GDI+ 41
Metafile Formats 41
Метафайлы в GDI+ 41
Форматы метафайлов 41
Drawing, Positioning, and Cloning Images in GDI+ 42
File Types and Cloning 42
Отрисовка, позиционирование и клонирование изображений в GDI+ 42
Типы файлов и клонирование 42
Cropping and Scaling Images in GDI+ 44
DrawImage Variations 44
Обрезка и масштабирование изображений в GDI+ 44
Варианты DrawImage 44
Coordinate Systems and Transformations 46
Types of Coordinate Systems 46
Transforms and Coordinate Systems 46
Системы координат и преобразования 46
Типы систем координат 46
Преобразования и системы координат 46
Matrix Representation of Transformations 50
Матричное представление преобразований 50
Composite Transformations 54
Составные преобразования 54
Global and Local Transformations 56
Global Transformations 56
Глобальные и локальные преобразования 56
Глобальные преобразования 56
Local Transformations 57
Локальные преобразования 57
Using Managed Graphics Classes 59
Getting Started with Graphics Programming 59
How to: Create Graphics Objects for Drawing 59
Creating a Graphics Object 59
PaintEventArgs in the Paint Event Handler 59
Использование управляемых графических классов 59
Приступая к программированию графики 59
Создание объектов Graphics для рисования 59
Создание объекта Graphics 59
PaintEventArgs в обработчике события Paint 59
CreateGraphics Method 60
Create from an Image Object 60
Метод CreateGraphics 60
Создание из объекта Image 60
Drawing and Manipulating Shapes and Images 61
How to: Create a Pen 61
Example 61
Robust Programming 61
Рисование фигур и изображений и управление ими 61
Создание пера 61
Пример 61
Надежное программирование 61
How to: Set the Color of a Pen 62
Example 62
Compiling the Code 62
Robust Programming 62
How to: Create a Solid Brush 62
Example 62
Robust Programming 62
Установка цвета фона для пера 62
Пример 62
Компиляция кода 62
Надежное программирование 62
Создание сплошной кисти 62
Пример 62
Надежное программирование 62
How to: Draw a Line on a Windows Form 63
Example 63
Compiling the Code 63
Robust Programming 63
Рисование линии в Windows Forms 63
Пример 63
Компиляция кода 63
Надежное программирование 63
How to: Draw an Outlined Shape 64
Example 64
Compiling the Code 64
Robust Programming 64
Рисование линии или контурной фигуры 64
Пример 64
Компиляция кода 64
Надежное программирование 64
How to: Draw a Filled Rectangle on a Windows Form 65
Example 65
Compiling the Code 65
Robust Programming 65
Рисование заполненного прямоугольника в Windows Forms 65
Пример 65
Компиляция кода 65
Надежное программирование 65
How to: Draw a Filled Ellipse on a Windows Form 66
Example 66
Compiling the Code 66
Robust Programming 66
Рисование заполненного эллипса в Windows Forms 66
Пример 66
Компиляция кода 66
Надежное программирование 66
How to: Draw Text on a Windows Form 67
Example 67
Compiling the Code 67
Robust Programming 67
Отрисовка текста в Windows Forms 67
Пример 67
Компиляция кода 67
Надежное программирование 67
How to: Draw Vertical Text on a Windows Form 68
Example 68
Compiling the Code 68
Robust Programming 68
Рисование текста по вертикали в Windows Forms 68
Пример 68
Компиляция кода 68
Надежное программирование 68
How to: Render Images with GDI+ 69
To render an image with GDI+ 69
Вывод изображений с использованием GDI+ 69
Вывод изображения с помощью GDI+ 69
How to: Create a Shaped Windows Form 70
Example 70
Compiling the Code 70
Создание фигурной формы Windows Forms 70
Пример 70
Компиляция кода 70
How to: Copy Pixels for Reducing Flicker in Windows Forms 71
Example 71
Compiling the Code 71
Копирование пикселов для уменьшения эффекта дрожания изображения в Windows Forms 71
Пример 71
Компиляция кода 71
Using a Pen to Draw Lines and Shapes 72
How to: Use a Pen to Draw Lines 72
Example 72
Compiling the Code 72
Рисование линий и фигур с помощью пера 72
Рисование линий с помощью пера 72
Пример 72
Компиляция кода 72
How to: Use a Pen to Draw Rectangles 73
Example 73
Compiling the Code 73
Рисование прямоугольников с помощью пера 73
Пример 73
Компиляция кода 73
How to: Set Pen Width and Alignment 74
To vary the width of a pen 74
Задание толщины и выравнивания пера 74
Изменение толщины пера 74
To change the alignment of a pen 75
To create an inset pen 75
Изменение выравнивания пера 75
Создание вложенного пера 75
How to: Draw a Line with Line Caps 76
Example 76
Compiling the Code 76
Рисование линий с наконечниками 76
Пример 76
Компиляция кода 76
How to: Join Lines 77
Example 77
Compiling the Code 77
Соединение линий 77
Пример 77
Компиляция кода 77
How to: Draw a Custom Dashed Line 78
Example 78
Compiling the Code 78
Рисование пользовательских пунктирных линий 78
Пример 78
Компиляция кода 78
How to: Draw a Line Filled with a Texture 79
Example 79
Compiling the Code 79
Рисование линии с текстурным заполнением 79
Пример 79
Компиляция кода 79
Using a Brush to Fill Shapes 80
How to: Fill a Shape with a Solid Color 80
Example 80
Compiling the Code 80
Использование кисти для заливки фигур 80
Заливка фигуры сплошным цветом 80
Пример 80
Компиляция кода 80
How to: Fill a Shape with a Hatch Pattern 81
Example 81
Compiling the Code 81
Штриховая заливка фигуры 81
Пример 81
Компиляция кода 81
How to: Fill a Shape with an Image Texture 82
Example 82
Compiling the Code 82
Заливка фигуры текстурой, созданной на основе изображения 82
Пример 82
Компиляция кода 82
How to: Tile a Shape with an Image 83
To tile an image 83
Мозаичное заполнение фигуры заданным изображением 83
Мозаичное заполнение изображением 83
To flip an image horizontally while tiling 84
To flip an image vertically while tiling 84
Горизонтальное зеркальное преобразование изображения при мозаичном заполнении 84
Вертикальное зеркальное преобразование изображения при мозаичном заполнении 84
To flip an image horizontally and vertically while tiling 85
Мозаичное заполнение с зеркальным отображением изображения по горизонтали и вертикали 85
Using a Gradient Brush to Fill Shapes 86
Заливка фигур с помощью градиентной кисти 86
How to: Create a Linear Gradient 87
Создание линейного градиента 87
To use horizontal linear gradients 88
Использование горизонтальных линейных градиентов 88
To customize linear gradients 89
Настройка линейных градиентов 89
To create diagonal linear gradients 90
Создание диагональных линейных градиентов 90
How to: Create a Path Gradient 91
To fill an ellipse with a path gradient 91
Создание градиента вдоль контура 91
Заливка эллипса с использованием градиента контура 91
To specify points on the boundary 92
Указание точек на границе 92
To customize a path gradient 94
Настройка градиента контура 94
To customize with interpolation 95
Настройка с интерполяцией 95
To set the center point 96
Задание центральной точки 96
How to: Apply Gamma Correction to a Gradient 97
Example 97
Compiling the Code 97
Применение гамма-коррекции к градиенту 97
Пример 97
Компиляция кода 97
Working with Images, Bitmaps, Icons, and Metafiles 98
How to: Load and Display Bitmaps 98
Example 98
Compiling the Code 98
Работа с растровыми и векторными изображениями 98
Загрузка и отображение растровых изображений 98
Пример 98
Компиляция кода 98
How to: Load and Display Metafiles 99
Example 99
Compiling the Code 99
Загрузка и отображение метафайлов 99
Пример 99
Компиляция кода 99
How to: Crop and Scale Images 100
Example 100
Compiling the Code 100
Обрезка и масштабирование изображений 100
Пример 100
Компиляция кода 100
How to: Rotate, Reflect, and Skew Images 101
Example 101
Поворот, отражение и наклон изображений 101
Пример 101
Compiling the Code 102
Компиляция кода 103
How to: Use Interpolation Mode to Control Image Quality During Scaling 103
Example 103
Использование режима интерполяции для управления качеством изображений при масштабировании 104
Пример 104
Compiling the Code 105
Компиляция кода 105
How to: Create Thumbnail Images 106
Example 106
Compiling the Code 106
Создание эскизов изображений 106
Пример 106
Компиляция кода 106
How to: Improve Performance by Avoiding Automatic Scaling 107
Повышение производительности за счет отключения автоматического масштабирования 107
Example 108
Compiling the Code 108
Пример 108
Компиляция кода 108
How to: Read Image Metadata 109
Id 109
Value 109
Len 109
Чтение метаданных изображения 109
Id 109
Значение 109
Len 109
Type 110
Example 110
Type 110
Пример 110
Compiling the Code 112
Компиляция кода 112
How to: Create a Bitmap at Run Time 113
Example 113
Compiling the Code 113
Создание растрового изображения во время выполнения 113
Пример 113
Компиляция кода 113
How to: Extract the Icon Associated with a File in Windows Forms 114
Example 114
Извлечение связанного с файлом значка в Windows Forms 114
Пример 114
Compiling the Code 115
Компиляция кода 115
Alpha Blending Lines and Fills 116
How to: Draw Opaque and Semitransparent Lines 116
Альфа-смешение цвета для линий и заливок 116
Рисование непрозрачных и полупрозрачных линий 116
Example 117
Compiling the Code 117
Пример 117
Компиляция кода 117
How to: Draw with Opaque and Semitransparent Brushes 118
Example 118
Compiling the Code 118
Рисование непрозрачными и полупрозрачными кистями 118
Пример 118
Компиляция кода 118
How to: Use Compositing Mode to Control Alpha Blending 119
Example 119
Использование режима комбинирования для управления альфа-смешением 119
Пример 119
Compiling the Code 120
Компиляция кода 120
How to: Use a Color Matrix to Set Alpha Values in Images 121
Example 121
Использование матрицы цветов для задания значений прозрачности в изображениях 121
Пример 121
Compiling the Code 122
Компиляция кода 122
Using Fonts and Text 123
How to: Construct Font Families and Fonts 123
Шрифты и текст 123
Разработка шрифтов и их семейств 123
Example 124
Compiling the Code 124
Пример 124
Компиляция кода 124
How to: Draw Text at a Specified Location 125
To draw a line of text with GDI+ 125
To draw a line of text with GDI 125
Compiling the Code 125
Рисование текста в указанной позиции 125
Рисование строки текста с использованием GDI+ 125
Рисование строки текста с использованием GDI 125
Компиляция кода 125
How to: Draw Wrapped Text in a Rectangle 126
To draw wrapped text in a rectangle with GDI+ 126
Многострочный вывод текста в прямоугольнике 126
Рисование текста с переносом по словам в прямоугольнике с помощью GDI+ 126
To draw wrapped text in a rectangle with GDI 127
Compiling the Code 127
Рисование текста с переносом по словам в прямоугольнике с помощью GDI 127
Компиляция кода 127
How to: Draw Text with GDI 128
Example 128
Compiling the Code 128
Рисование текста с использованием GDI 128
Пример 128
Компиляция кода 128
How to: Align Drawn Text 129
To draw centered text with GDI+ (DrawString) 129
To draw centered text with GDI (DrawText) 129
Compiling the Code 129
Выравнивание рисуемого текста 129
Рисование центрированного текста с использованием GDI+ (DrawString) 129
Рисование центрированного текста с использованием GDI (DrawText) 129
Компиляция кода 129
How to: Create Vertical Text 130
Example 130
Compiling the Code 130
Вывод текста по вертикали 130
Пример 130
Компиляция кода 130
How to: Set Tab Stops in Drawn Text 131
Example 131
Установка позиций табуляции для выводимого текста 131
Пример 131
Compiling the Code 132
Компиляция кода 132
How to: Enumerate Installed Fonts 133
Example 133
Перебор установленных шрифтов 133
Пример 133
Compiling the Code 134
Компиляция кода 134
How to: Obtain Font Metrics 135
Получение метрик шрифтов 135
Example 136
Пример 136
Compiling the Code 138
Компиляция кода 138
How to: Use Antialiasing with Text 139
Example 139
Compiling the Code 139
Сглаживание текста 139
Пример 139
Компиляция кода 139
Constructing and Drawing Curves 140
How to: Draw Cardinal Splines 140
Drawing a Bell-Shaped Cardinal Spline 140
Построение и рисование кривых 140
Рисование фундаментальных сплайнов 140
Рисование фундаментального сплайна в форме колокола 140
Drawing a Closed Cardinal Spline 141
141
Рисование замкнутого фундаментального сплайна 141
Changing the Bend of a Cardinal Spline 142
Compiling the Code 142
Изменение изгиба фундаментального сплайна 142
Компиляция кода 142
How to: Draw a Single Bézier Spline 143
Example 143
Compiling the Code 143
Рисование отдельного сплайна Безье 144
Пример 144
Компиляция кода 144
How to: Draw a Sequence of Bézier Splines 144
Example 144
Compiling the Code 144
Рисование последовательности сплайнов Безье 145
Пример 145
Компиляция кода 145
Constructing and Drawing Paths 146
How to: Create Figures from Lines, Curves, and Shapes 146
Example 146
Построение и рисование контуров 146
Создание изображений из прямых и кривых линий и геометрических фигур 146
Пример 146
Compiling the Code 147
Компиляция кода 147
How to: Fill Open Figures 148
Example 148
Compiling the Code 148
Заливка открытых фигур 148
Пример 148
Компиляция кода 148
How to: Flatten a Curved Path into a Line 149
To Flatten a Path 149
Using Transformations in Managed GDI+ 149
Using the World Transformation 149
Спрямление участков кривой 149
Спрямление контура 149
Использование преобразований в управляемом GDI+ 149
Использование объемного преобразования 149
Different Types of Transformations 150
Различные типы преобразований 150
Why Transformation Order Is Significant 151
Composite Transform Examples 151
Значение порядка преобразований 151
Примеры составных преобразований 151
Using Graphics Containers 153
Managing the State of a Graphics Object 153
Graphics State 153
Использование графических контейнеров 153
Управление состоянием объекта Graphics 153
Состояние объекта Graphics 153
Using Nested Graphics Containers 156
Transformations in Nested Containers 156
Использование вложенных графических контейнеров 156
Преобразования во вложенных контейнерах 156
Clipping in Nested Containers 157
Обрезка во вложенных контейнерах 157
Quality Settings in Nested Containers 158
Several Layers of Nested Containers 158
Параметры качества во вложенных контейнерах 158
Различные уровни вложенных контейнеров 158
Using Regions 160
How to: Use Hit Testing with a Region 160
Example 160
Compiling the Code 160
Использование областей 160
Проверка нахождения указателя мыши в заданной области 160
Пример 160
Компиляция кода 160
How to: Use Clipping with a Region 161
Example 161
Compiling the Code 161
Обрезка изображения по границам области обрезки 161
Пример 161
Компиляция кода 161
Using Image Encoders and Decoders in Managed GDI+ 162
How to: List Installed Encoders 162
Example 162
Применение кодировщиков и декодеров изображений в управляемом GDI+ 162
Получение списка установленных кодировщиков 162
Пример 162
Compiling the Code 163
Компиляция кода 163
How to: List Installed Decoders 164
Example 164
Получение списка установленных декодеров 164
Пример 164
Compiling the Code 165
Компиляция кода 165
How to: Convert a BMP image to a PNG image 166
Example 166
Compiling the Code 166
How to: Set JPEG Compression Level 166
Example 166
Преобразование изображение из формата BMP в формат PNG 166
Пример 166
Компиляция кода 166
Установка уровня сжатия JPEG 166
Пример 166
Compiling the Code 167
Компиляция кода 167
Graphics and Drawing in Windows Forms
The common language runtime uses an advanced implementation of the Windows Graphics Device Interface (GDI) called GDI+. With GDI+ you can create graphics, draw text, and manipulate graphical images as objects. GDI+ is designed to offer performance and ease of use. You can use GDI+ to render graphical images on Windows Forms and controls. Although you cannot use GDI+ directly on Web Forms, you can display graphical images through the Image Web Server control.
In this section, you will find topics that introduce the fundamentals of GDI+ programming. Although not intended to be a comprehensive reference, this section includes information about the Graphics, Pen, Brush, and Color objects, and explains how to perform such tasks as drawing shapes, drawing text, or displaying images.
Overview of Graphics
GDI+ is an application programming interface (API) that forms the subsystem of the Microsoft Windows XP operating system. GDI+ is responsible for displaying information on screens and printers. As its name suggests, GDI+ is the successor to GDI, the Graphics Device Interface included with earlier versions of Windows.
Managed Class Interface
The GDI+ API is exposed through a set of classes deployed as managed code. This set of classes is called the managed class interface to GDI+. The following namespaces make up the managed class interface:
System.Drawing
System.Drawing.Drawing2D
System.Drawing.Imaging
System.Drawing.Text
System.Drawing.Printing
With a Graphics Device Interface, such as GDI+, you can display information on a screen or printer without having to be concerned about the details of a particular display device. The programmer makes calls to methods provided by GDI+ classes. Those methods, in turn, make the appropriate calls to specific device drivers. GDI+ insulates the application from the graphics hardware. It is this insulation that enables a programmer to create device-independent applications.
Объекты Graphics и Drawing в Windows Forms
Среда CLR использует расширенную реализацию интерфейса Windows GDI (интерфейс) (GDI) — GDI+. Интерфейс GDI+ поддерживает создание графики, вывод текста и управление изображениями в качестве объектов. Интерфейс GDI+ отличается высокой производительность и простотой в использовании. Интерфейс GDI+ можно использовать для вывода графических изображений на формах Windows Forms и элементах управления. Хотя GDI+ нельзя использовать непосредственно на веб-формах, можно выводить графические изображения через элемент управления веб-сервера Image.
В этом разделе описаны основы программирования с использованием GDI+. Хотя данный раздел не является полным справочником, он включает сведения об объектах Graphics, Pen, Brush и Color и способах выполнения таких задач, как рисование фигур, создание текста, отображение рисунков. Дополнительные сведения см. в справочной документации по GDI+, расположенной в библиотеке MSDN по адресу http://msdn.microsoft.com/library.
Обзор графических возможностей
GDI+ — это интерфейс прикладной программный интерфейс (API), формирующий подсистему ОС Microsoft Windows XP. GDI+ отвечает за вывод информации на экран и на печать. Как следует из его названия, GDI+ является преемником GDI, интерфейса GDI (интерфейс), входившего в более ранние версии Windows.
Интерфейс управляемых классов
Доступ к API-интерфейсу GDI+ осуществляется через набор классов, из которых создается управляемый код. Этот набор классов называется интерфейсом управляемых классов GDI+. Интерфейс управляемых классов состоит из следующих пространств имен:
System.Drawing
System.Drawing.Drawing2D
System.Drawing.Imaging
System.Drawing.Text
System.Drawing.Printing
Интерфейсы GDI (интерфейс), такие как GDI+, позволяют создателям приложений выводить данные на экран или на принтер без необходимости обеспечивать работу с определенными типами устройств отображения. Разработчикам достаточно обращаться к методам, содержащимся в классах GDI+. Эти методы, в свою очередь, осуществляют вызовы драйверов определенных устройств. Таким образом GDI+ изолирует приложение от оборудования, работающего с графикой. Именно такая изоляция дает программистам возможность создавать приложения, не зависящие от устройств.
Three Categories of Graphics Services
The graphics offerings in Windows Forms fall into the following three broad categories:
Two-dimensional (2-D) vector graphics
Imaging
Typography
2-D Vector Graphics
Two-dimensional vector graphics are primitives; such as lines, curves, and figures; that are specified by sets of points on a coordinate system. For example, a straight line is specified by its two endpoints, and a rectangle is specified by a point giving the location of its upper-left corner and a pair of numbers giving its width and height. A simple path is specified by an array of points that are connected by straight lines. A Bézier spline is a sophisticated curve specified by four control points.
GDI+ provides classes and structures that store information about the primitives themselves, classes that store information about how the primitives will be drawn, and classes that actually do the drawing. For example, the Rectangle structure stores the location and size of a rectangle; the Pen class stores information about line color, line width, and line style; and the Graphics class has methods for drawing lines, rectangles, paths, and other figures. There are also several Brush classes that store information about how closed figures and paths will be filled with colors or patterns.
You can record a vector image, which is a sequence of graphics commands, in a metafile. GDI+ provides the Metafile class for recording, displaying, and saving metafiles. With the MetafileHeader and MetaHeader classes, you can inspect the data stored in a metafile header.
Imaging
Certain kinds of pictures are difficult or impossible to display with the techniques of vector graphics. For example, the pictures on toolbar buttons and the pictures that appear as icons are difficult to specify as collections of lines and curves. A high-resolution digital photograph of a crowded baseball stadium is even more difficult to create with vector techniques. Images of this type are stored as bitmaps, which are arrays of numbers that represent the colors of individual dots on the screen. GDI+ provides the Bitmap class for displaying, manipulating, and saving bitmaps.
Typography
Typography is the display of text in a variety of fonts, sizes, and styles. GDI+ provides extensive support for this complex task. One of the new features in GDI+ is subpixel antialiasing, which gives text rendered on an LCD screen a smoother appearance.
In addition, Windows Forms offers the option to draw text with GDI capabilities in its TextRenderer class.