当使用 GDI+ 绘制直线时,需要提供直线的起点和终点,但不必提供有关直线上个别像素的任何信息。GDI+ 与显示设备驱动程序软件协同工作,以确定要开启哪些像素以便在特殊显示设备上显示直线。
锯齿化
请注意从点 (4,2) 到点 (16,10) 的红色直线。假定坐标系统的原点位于左上角且度量单位是像素。另外假定 x 坐标轴指向右边、y 坐标轴指向下边。下面的插图显示了在多颜色背景下绘制的红线的放大视图。
.gif)
用来呈现直线的红色像素是不透明的。直线中没有部分透明的像素。这种呈现类型的直线看上去带有锯齿,有点像楼梯。这种用楼梯状来表示直线的技术被称为锯齿化;楼梯是理论直线的一个别名。
消除锯齿
一项更为复杂的呈现直线的技术需要使用部分透明的像素和不透明的像素。像素被设为纯红色或红色与背景色的混合色(取决于它们和直线的接近程度)。这种呈现方式被称为消除锯齿,它可以生成视觉上更感平滑的直线。下面的插图显示了如何混合特定的像素和背景来生成消除锯齿的直线。
.gif)
消除锯齿(也称为平滑)也可应用于曲线。下面的插图显示了平滑椭圆的放大视图。
.gif)
下面的插图显示了实际大小的同一个椭圆,一次没有使用消除锯齿,另一次使用了消除锯齿。
.gif)
若要使用“消除锯齿”功能绘制直线和曲线,请创建 Graphics 类的实例,并将其 SmoothingMode 属性设置为 AntiAlias 或 HighQuality。然后调用同一 Graphics 类的某个绘制方法。
myGraphics.SmoothingMode = SmoothingMode.AntiAlias myGraphics.DrawLine(myPen, 0, 0, 12, 8)
myGraphics.SmoothingMode = SmoothingMode.AntiAlias; myGraphics.DrawLine(myPen, 0, 0, 12, 8);