用直线和曲线抗锯齿

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

失真

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

未抗锯齿的直线

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

抗锯齿

呈现线条的更复杂的技术涉及使用部分透明像素以及不透明像素。 像素设置为纯红色,或设置为红色和背景色的一些混合,具体取决于它们与线条的距离。 这种类型的渲染称为抗锯齿,并使人眼感觉到线条更加平滑。 下图显示了如何将某些像素与背景混合以生成抗锯齿线。

消除直线的锯齿

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

抗锯齿曲线

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

抗锯齿示例

若要绘制使用抗锯齿的线条和曲线,请创建 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)

另请参阅