Сглаживание прямых и кривых линий
При использовании Windows GDI+ для рисования линии вы предоставляете начальную и конечную точку линии, но вам не нужно предоставлять какие-либо сведения об отдельных пикселях линии. GDI+ взаимодействует с программным драйвером экрана для определения того, какие пиксели нужно включить, чтобы на определенном экране возникло изображение линии.
Рассмотрим прямую красную линию, которая идет от точки (4, 2) до точки (16, 10). Предположим, что начало системы координат находится в левом верхнем углу, и что единицей измерения является пиксель. Также предположим, что ось X направлена вправо, а ось Y — вниз. На следующем рисунке приводится увеличенное представление красной линии, нарисованной на разноцветном фоне.
Обратите внимание, что красные пиксели, используемые для отрисовки линии, непрозрачны. При отображении линии нет частично прозрачных пикселей. Этот тип отрисовки линий придает линии неровный вид, а линия немного похожа на лестницу. Эта техника представления линии в виде лестницы называется алиасингом, искажением контуров; лестница является имитацией теоретической линий.
Более сложный метод отрисовки линии включает использование частично прозрачных пикселей вместе с чисто красными пикселями. Пиксели имеют чисто красный цвет или некоторое сочетание красного и цвета фона в зависимости от того, насколько близко они находятся к линии. Этот тип отрисовки называется сглаживанием (антиальясингом), и он приводит к тому, что линия воспринимается человеческим глазом более гладкой. На следующем рисунке показано, как определенные пиксели смешиваются с фоном для создания сглаженной линии.
Сглаживание (сглаживание) также может применяться к кривым. На следующем рисунке показано увеличенное представление сглаженного эллипса.
На следующем рисунке показан один и тот же эллипс фактического размера, но в одном случае без антиальясинга (сглаживания), а в другом случае с антиальясингом (сглаживанием).
Чтобы нарисовать линии и кривые, использующие сглаживание, создайте объект Graphics и передайте SmoothingModeAntiAlias в метод Graphics::SetSmoothingMode . Затем вызовите один из методов рисования того же объекта Graphics .
myGraphics.SetSmoothingMode(SmoothingModeAntiAlias);
myGraphics.DrawLine(&myPen, 0, 0, 12, 8);
SmoothingModeAntiAlias является элементом перечисления SmoothingMode .