Поделиться через


Сглаживание прямых и кривых линий

Обновлен: Ноябрь 2007

При рисовании линии с помощью интерфейса GDI+ для задания положения линии нужно указывать только начальную и конечную точку, а предоставлять данные о промежуточных точках линии не нужно. Интерфейс GDI+ взаимодействует с программным обеспечением драйвера экрана, чтобы определить, какие точки экрана должны быть высвечены, чтобы на конкретном устройстве возникло изображение линии.

Неровности

В приведенном ниже примере демонстрируется рисование прямой линии красного цвета из точки с координатами (4, 2) в точку с координатами (16, 10). Предположим, что начало координат расположено в верхнем левом углу экрана, а единицей измерения является точка (минимальный элемент изображения). Также предположим, что ось X направлена вправо, а ось Y — вниз. На приведенном ниже рисунке представлено увеличенное изображение красной линии, нарисованной на многоцветном фоне.

Прямая линия, без сглаживания

Красные точки, составляющие линию, непрозрачны. В линии отсутствуют частично прозрачные точки. Такой тип отрисовки линии делает ее неровной на вид, при определенном увеличении линия становится ступенчатой. При таком подходе к представлению линии теоретическая линия приближается ступенчатой последовательностью точек.

Сглаживание

Более сложные способы отрисовки прямых линий заключаются в использовании частично прозрачных точек наряду с абсолютно непрозрачными. Для точек линии задается либо чистый красный цвет, либо смешение красного с цветом фона, в зависимости от того, насколько близки эти точки к линии. Такой тип отрисовки линий называется сглаживанием, он позволяет отображать линии так, чтобы для человеческого глаза они выглядели более гладкими. На приведенном ниже рисунке изображены несколько точек в, цвет которых смешивается с цветом фона для образования сглаженной линии.

Сглаживание прямой линии

Сглаживание можно также применять для кривых. На приведенном ниже рисунке показано увеличенное изображение сглаженного эллипса.

Сглаживание кривых

На приведенном ниже рисунке тот же эллипс изображен в натуральную величину в двух вариантах — с применением и без применения сглаживания.

Пример сглаживания

Чтобы рисовать прямые и кривые линии с использованием сглаживания, создайте экземпляр класса Graphics и присвойте его свойству SmoothingMode значение AntiAlias или HighQuality. После этого вызовите один из методов рисования этого же класса Graphics.

myGraphics.SmoothingMode = SmoothingMode.AntiAlias
myGraphics.DrawLine(myPen, 0, 0, 12, 8)

myGraphics.SmoothingMode = SmoothingMode.AntiAlias;
myGraphics.DrawLine(myPen, 0, 0, 12, 8);

См. также

Задачи

Практическое руководство. Сглаживание текста

Ссылки

System.Drawing.Drawing2D.SmoothingMode

Другие ресурсы

Прямые и кривые линии и фигуры