用直线和曲线抗锯齿

当使用 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);

请参见

任务

如何:对文本使用抗锯齿效果

参考

System.Drawing.Drawing2D.SmoothingMode

其他资源

直线、曲线和图形