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í.
Č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.
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.
Následující obrázek znázorňuje stejnou elipsu ve skutečné velikosti, jednou bez antialiasingu a jednou s antialiasingem.
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é
.NET Desktop feedback