Sdílet prostřednictvím


Vyhlazení u č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í.

Používání aliasů

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í.

Line, no antialiasing

Č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á čáru zašroubovaný vzhled a čára vypadá trochu jako schodiště. Tato technika představuje přímku se schodištěm 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 nastavené na čistou červenou nebo na kombinaci červené barvy a barvy pozadí v závislosti na tom, jak blízko jsou čáry. 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.

Antialiasing a Line

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í tří teček.

Antialiasing Curves

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

Antialiasing example

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

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

Viz také