Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
K.Bulats Doc`s.docx
Скачиваний:
3
Добавлен:
27.09.2019
Размер:
30.87 Кб
Скачать

1.3. Рисование линий, кривых и фигур

Font и SolidBrush — это графические примитивы, используемые дл управления форматом изображения, выводимого в окно формы. Но это не единственные примитивы, которые GDI+ предоставляет в ваше распоряжение. Вот еще: Графические примитивы GDI+

Класс

Описание

Bitmap

Представляет растровые изображения

Font

Определяет атрибуты шрифта: размер, гарнитуру и т. д

HatchBrush

Определяет заливку решетчатым узором

LinearGradientBrush

Определяет заливку с линейным градиентом

Реn

Определяет внешний вид линий и кривых

SolidBrush

Определяет заливку сплошным цветом

TextureBrush

Определяет заливку с использованием растрового изображения

Некоторые из этих классов определены в пространстве имен System.Drawing, другие — в пространстве имен System.Drawing.Drawing2D (NB). Перья, представленные экземплярами класса Реп, управляют внешним видом линий и кривых. Объект Font задают внешний вид текста, тогда как кисти, представленные объектами классов HatchBrusb, LinearGradientBrush, SolidBrush и TextureBrusb определяют виды заливки. Приведенный ниже ме-

тод OnPaint рисует прямоугольники трех стилей: 1) без заливки, 2) закрашенный красным цветом и 3) с градиентной заливкой, переходящей из красного в синее:

protected override void OnPaint (PaintEventArgs e)

{

Pen pen = new Pen (Color.Black);

// Нарисовать пустой прямоугольник.

e.Graphics.DrawRectangle(pen, 10, 10, 390, 90);

// Нарисовать прямоугольник со сплошной заливкой.

SolidBrush solid = new SolidBrush (Color.Red);

e.Graphics.FilLRectangle (solid, 10, 110, 390, 90);

e.Graphics.DrawRectangle (pen, 10, 110, 390, 90);

// Нарисовать прямоугольник с градиентной заливкой.

Rectangle rect = new Rectangle (10, 210, 390, 90);

LinearGradientBrush gradient = new LinearGradientBrush (rect, Color.Red,

Color.Blue, LinearGradientMode.Horizontal);

e.Graphics.FillRectangle (gradient, rect);

e.Graphics.DrawRectangle (pen, rect);

}

1.4. Координаты и преобразования

При вызове DrawRectangle и FillRectangle вы определяете координаты, указывающие положение левого верхнего угла прямоугольника, и расстояния, задающие его ширину и высоту. По умолчанию расстояния измеряются в пикселах. Координаты задают расположение в двумерной системе, начало которой располагается в левом верхнем углу формы, а оси х и у направлены вправо и вниз соответственно. Систему координат и единицы измерения, применяемые по умолчанию, можно настроить, добавив в программу несколько простых операторов.Методам Graphics передаются глобальные координаты. По пути на экран они дважды преобразуются: сначала транслируются в страничные координаты, определяющие положение на логической поверхности для рисования, а затем страничные координаты преобразуются в координаты устройства, задающие физическое положение на экране.Для трансляции глобальных координат в страничные GDI+ использует матрицу преобразования. Матрицы преобразования — это математические объекты, позволяющие преобразовывать пары координат х-у из одной системы координат в другую. Они повсеместно используются в компьютерной графике и подробно описаны в соответствующей литературе.

Матрицы преобразования, применяемые GDI+ для пересчета координат, являются экземплярами класса System.Drawing.Drawing2D.Matrix. Каждый объект Graphics содержит объект Matrix, доступ к которому осуществляется через свойство Transform. По умолчанию используется единичная матрица (identity matrix) — этот математический термин обозначает матрицу, не производящую преобразований (так же, как умножение числа на1 дает то же число). Вы можете изменять матрицу преобразования, а значит, и способ пересчета глобальных координат в страничные, одним из двух способов. Первый — инициализировать экземпляр класса Matrix значениями, задающими желаемое преобразование, и присвоить его свойству Transform. Это прекрасный способ для экспертов по линейной алгебре, но простые смертные, вероятно, предпочтут иное: зададут преобразование координат таких методов Graphics, как TranslateTransform и RotateTransform. TranslateTransform перемещает начало системы координат на указанные расстояния по осям х и у. RotateTransform поворачивает оси х и у.Оба метода позволяют поместить начало координат в любую точку и повернуть оси х и у на любой угол. TranslateTransform и RotateTransform это мощные инструменты перемещения координатной системы и ориентации ее осей. Родственный метод ScaleTransform позволяет еще и масштабировать координаты. При использовании преобразований системы координат следует иметь в виду, что порядок их применения влияет на результаты, В предыдущем примере система координат была сначала перемещена, а затем повернута. Начало отсчета переместилось в точку (100, 100), после чего был выполнен поворот на -45° (против часовой стрелки). Если сначала выполнить поворот, а потом перемещение, прямоугольник появится в другом

месте, так как перемещение произойдет вдоль уже повернутых осей. Это можно представить себе так: если вы, стоя в комнате, пройдете несколько шагов вперед, а затем повернетесь, то окажетесь не в том же месте, где

вы были бы, если бы сначала повернулись, а потом пошли. Тот же принцип применим и к матричным преобразованиям.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]