Stosowanie antyaliasingu do linii i krzywych

W przypadku użycia interfejsu GDI+ do narysowania linii należy podać punkt początkowy i punkt końcowy wiersza, ale nie trzeba podawać żadnych informacji o poszczególnych pikselach w wierszu. Interfejs GDI+ działa w połączeniu z oprogramowaniem sterowników wyświetlania w celu określenia, które piksele zostaną włączone, aby wyświetlić wiersz na określonym urządzeniu wyświetlania.

Tworzenie aliasów

Rozważ prostą czerwoną linię, która przechodzi od punktu (4, 2) do punktu (16, 10). Załóżmy, że układ współrzędnych ma swoje źródło w lewym górnym rogu i że jednostka miary jest pikselem. Załóżmy również, że oś x wskazuje na prawą, a oś y w dół. Na poniższej ilustracji przedstawiono powiększony widok czerwonej linii narysowanej na wielobarwnym tle.

Line, no antialiasing

Czerwone piksele używane do renderowania linii są nieprzezroczyste. W wierszu nie ma częściowo przezroczystych pikseli. Ten typ renderowania linii daje linii postrzępiony wygląd, a linia wygląda nieco jak schody. Ta technika reprezentowania linii z schodami jest nazywana aliasem; schody są aliasem dla linii teoretycznej.

Antialiasing

Bardziej zaawansowana technika renderowania linii obejmuje używanie częściowo przezroczystych pikseli wraz z nieprzezroczystymi pikselami. Piksele są ustawione na czystą czerwoną lub na mieszankę koloru czerwonego i tła, w zależności od tego, jak blisko znajdują się one w linii. Ten typ renderowania jest nazywany antyaliasingiem i prowadzi do linii, którą ludzkie oko postrzega jako bardziej gładkie. Na poniższej ilustracji pokazano, jak niektóre piksele są w połączeniu z tłem w celu utworzenia linii antyaliasedowej.

Antialiasing a Line

Antyaliasing, nazywany również wygładzeniem, można również stosować do krzywych. Na poniższej ilustracji przedstawiono powiększony widok wygładzonego wielokropka.

Antialiasing Curves

Na poniższej ilustracji przedstawiono ten sam wielokropek w rzeczywistym rozmiarze, raz bez antyaliasingu i raz z antyaliasingiem.

Antialiasing example

Aby narysować linie i krzywe używające antyaliasingu, utwórz wystąpienie Graphics klasy i ustaw jej SmoothingMode właściwość na AntiAlias wartość lub HighQuality. Następnie wywołaj jedną z metod rysowania tej samej Graphics klasy.

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

Zobacz też