用直线和曲线抗锯齿

使用 GDI+ 绘制一条线时,要提供线条的起点和终点,但不必提供有关线条上各个像素的任何信息。 GDI+ 与显示驱动程序软件协同工作,确定将打开哪些像素以在特定显示设备上显示该线条。

别名

考虑从点 (4, 2) 到点 (16, 10) 的红色线条。 假设坐标系的原点在左上角,并且度量单位是像素。 另假设 x 轴向右,y 轴向下。 下图显示了绘制在彩色背景上的红线的放大视图。

Line, no antialiasing

用于呈现线条的红色像素是不透明的。 线条中没有部分透明的像素。 这种类型的线条渲染使线条呈现锯齿状外观,该线条看起来有点像楼梯。 这种用楼梯表示线条的技术称为混叠;楼梯是理论线的别名。

抗锯齿

用于呈现线条的更复杂技术涉及使用部分透明的像素和不透明的像素。 像素设置为纯红色,或红色和背景色的某种混合,具体取决于它们与线条的接近程度。 这种类型的渲染称为抗锯齿,能使线条在人眼看来更加流畅。 下图显示了如何将某些像素与背景混合以生成抗锯齿线。

Antialiasing a Line

抗锯齿,也称为平滑处理,也可以应用于曲线。 下图显示了一个平滑椭圆形的放大视图。

Antialiasing Curves

下图显示了同一椭圆形的实际大小,一次未应用抗锯齿,一次应用抗锯齿。

Antialiasing example

若要绘制使用抗锯齿的直线和曲线,请创建 Graphics 类的实例并将其 SmoothingMode 属性设置为 AntiAliasHighQuality。 然后调用同一 Graphics 类的绘图方法之一。

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

另请参阅