用直线和曲线抗锯齿
使用Windows GDI+绘制线条时,可以提供线条的起点和终点,但不必提供有关行上各个像素的任何信息。 GDI+与显示驱动程序软件结合使用,以确定将打开哪些像素以显示特定显示设备上的行。
假设一条从点 (4、2) 到点 (16、10) 的直线。 假定坐标系统在左上角有其原点,度量单位是像素。 另假设 x 轴指向右侧,y 轴向下点。 下图显示了在彩色背景上绘制的红线的放大视图。
请注意,用于呈现线条的红色像素不透明。 显示线条时不涉及部分透明像素。 这种类型的线条呈现使线条出现杂杂的外观,线条看起来有点像楼梯。 用楼梯表示线条的这种技术称为别名:楼梯是理论线的别名。
呈现线条的更复杂技术涉及使用部分透明像素以及纯红色像素。 像素设置为纯红色或红色和背景色的混合,具体取决于它们与线条的距离。 这种类型的渲染称为抗锯齿,并导致人眼认为更光滑的线条。 下图显示了如何将某些像素与背景混合以生成抗锯齿线。
反锯齿 (平滑) 也可以应用于曲线。 下图显示了平滑椭圆的放大视图。
下图显示了其实际大小的相同省略号,一次没有抗锯齿,一次使用抗锯齿。
若要绘制使用抗锯齿的线条和曲线,请创建图形对象并将 SmoothingModeAntiAlias 传递给其 Graphics::SetSmoothingMode 方法。 然后调用同一 图形 对象的绘图方法之一。
myGraphics.SetSmoothingMode(SmoothingModeAntiAlias);
myGraphics.DrawLine(&myPen, 0, 0, 12, 8);
SmoothingModeAntiAlias 是 SmoothingMode 枚举的元素。