Згладжування прямих і кривих ліній

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

Розглянемо малювання прямої лінії червоного кольору з точки з координатами (4, 2) в точку з координатами (16, 10). Припустимо, що початок координат розташовано у верхньому лівому кутку екрана, а одиницею виміру є піксель. Також припустимо, що вісь X спрямована вправо, а вісь Y - вниз. На наведеному нижче малюнку представлено збільшене зображення червоної лінії, намальованої на багатобарвному тлі.

Червоні пікселі, що становлять лінію, непрозорі. У лінії відсутні частково прозорі пікселі. Такий тип відтворення лінії робить її нерівній на вигляд, при певному збільшенні лінія стає ступінчастою. При такому підході до подання лінії теоретична лінія наближається ступінчастою послідовністю точок.

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

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

Згладжування прямих і кривих ліній

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

Щоб малювати прямі і криві лінії з використанням згладжування, створіть екземпляр класу Graphics і надайте його властивості SmoothingMode значення AntiAlias ​​або HighQuality. Після цього викличте один з методів малювання цього ж класу Graphics.