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

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

Псевдонимы

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

Line, no antialiasing

Красные пиксели, используемые для отрисовки линии, непрозрачны. На линии нет частично прозрачных пикселей. Такой тип отрисовки воспроизводит неровную линию, которая напоминает лестницу. Эта техника представления линии в виде лестницы называется алиасингом, искажением контуров; лестница является имитацией теоретической линий.

Сглаживание (антиальясинг)

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

Antialiasing a Line

К кривым также можно применять антиальясинг, называемый еще сглаживанием. На следующем рисунке показано увеличенное представление сглаженного эллипса.

Antialiasing Curves

На следующем рисунке показан один и тот же эллипс фактического размера, но в одном случае без антиальясинга (сглаживания), а в другом случае с антиальясингом (сглаживанием).

Antialiasing example

Для рисования линий и кривых со сглаживанием, нужно создать экземпляр класса 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)

См. также