Sdílet prostřednictvím


Antialiasing pomocí čar a křivek

Při kreslení čáry pomocí GDI+ zadáte počáteční a koncový bod čáry, ale nemusíte zadávat žádné informace o jednotlivých pixelech na čáře. GDI+ funguje ve spojení se softwarem ovladače displeje a zjišťuje, které pixely budou zapnuté, aby se čára zobrazila na konkrétním zobrazovacím zařízení.

Aliasování

Představte si rovnou červenou čáru, která směřuje od bodu (4, 2) k bodu (16, 10). Předpokládejme, že souřadnicový systém má svůj původ v levém horním rohu a že měrná jednotka je pixel. Předpokládejme také, že osa x odkazuje vpravo a osa y směřuje dolů. Následující obrázek znázorňuje zvětšené zobrazení červené čáry nakreslené na vícebarevném pozadí.

Přímka, bez vyhlazování

Červené pixely použité k vykreslení čáry jsou neprůžné. V řádku nejsou žádné částečně průhledné pixely. Tento typ vykreslování čar dává čáře zubatý vzhled a čára připomíná schody. Tato technika, která představuje přímku pomocí schodovitého zobrazení, se nazývá aliasing; schodiště je alias pro teoretickou přímku.

Antialiasing

Složitější technika vykreslování čáry zahrnuje použití částečně průhledných pixelů spolu s neprůhlednými pixely. Pixely jsou nastaveny na čistou červenou nebo na kombinaci červené a barvy pozadí v závislosti na tom, jak blízko jsou k čáře. Tento typ vykreslování se nazývá antialiasing a má za následek přímku, kterou lidské oko považuje za plynulejší. Následující obrázek znázorňuje, jak se určité pixely prolínají s pozadím, aby vznikla antialiased čára.

Vyhlazení čáry

Antialiasing, označovaný také jako vyhlazování, lze použít také na křivky. Následující obrázek znázorňuje zvětšené zobrazení vyhlazené elipsy.

antialiasingové křivky

Následující obrázek znázorňuje stejnou elipsu ve skutečné velikosti, jednou bez antialiasingu a jednou s antialiasingem.

příklad antialiasingu

Chcete-li nakreslit čáry a křivky, které používají antialiasing, vytvořte instanci třídy Graphics a nastavte její SmoothingMode vlastnost na AntiAlias nebo HighQuality. Potom zavolejte jednu z kreslících metod té stejné třídy Graphics.

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

Viz také