Antialiasing bei Linien und Kurven

Wenn Sie GDI+ verwenden, um eine Linie zu zeichnen, geben Sie den Start- und Endpunkt der Linie an, müssen aber keine Informationen zu den einzelnen Pixeln in der Linie angeben. GDI+ arbeitet mit der Anzeigetreibersoftware zusammen, um zu bestimmen, welche Pixel aktiviert werden, um die Linie auf einem bestimmten Anzeigegerät anzuzeigen.

Aliase

Sehen Sie sich die gerade rote Linie zwischen den Punkten (4, 2) und (16, 10) an. Angenommen, das Koordinatensystem hat seinen Ursprung in der linken oberen Ecke, und als Maßeinheit werden Pixel verwendet. Nehmen Sie außerdem an, dass die x-Achse nach rechts und die y-Achse nach unten zeigt. Die folgende Abbildung enthält eine vergrößerte Darstellung der gezeichneten roten Linie auf einem mehrfarbigen Hintergrund:

Line, no antialiasing

Die roten Pixel, die zum Rendern der Linie verwendet werden, sind undurchsichtig. Die Linie enthält keine teilweise transparenten Pixel. Diese Art des Linienrenderings führt zu einer gezackten Darstellung, die ein wenig an eine Treppe erinnert. Die Technik, eine Linie mit einer Treppe darzustellen, wird als Aliasing bezeichnet. Die Treppe ist ein Alias für die theoretische Linie.

Antialiasing

Eine komplexere Technik zum Rendern einer Linie beinhaltet die Verwendung einer Kombination aus teilweise transparenten Pixeln und undurchsichtigen Pixeln. Pixel werden abhängig von ihrem Abstand zur Linie auf reines Rot oder auf eine Mischung aus Rot und Hintergrundfarbe festgelegt. Diese Art von Rendering wird als Antialiasing bezeichnet und führt zu einer Linie, die vom menschlichen Auge als stufenloser wahrgenommen wird. Die folgende Abbildung zeigt, wie bestimmte Pixel mit dem Hintergrund gemischt werden, um eine Linie mit Antialiasing zu erzeugen:

Antialiasing a Line

Antialiasing wird auch als Kantenglättung bezeichnet und kann auch auf Kurven angewendet werden. Die folgende Abbildung zeigt eine vergrößerte Ansicht einer geglätteten Ellipse:

Antialiasing Curves

Die folgende Abbildung zeigt die gleiche Ellipse in ihrer tatsächlichen Größe – einmal ohne Antialiasing und einmal mit:

Antialiasing example

Wenn Sie Linien und Kurven mit Antialiasing zeichnen möchten, erstellen Sie eine Instanz der Graphics-Klasse, und legen Sie die SmoothingMode-Eigenschaft auf AntiAlias oder HighQuality fest. Rufen Sie dann eine der Zeichenmethoden der gleichen Graphics-Klasse auf.

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

Siehe auch