调用Windows GDI函数绘制的线段经常会出现“锯齿”,看上去很不美观,我们称之为“走样”。
显示器像素点的坐标都为整数,而且像素点之间存在“点距”。线段上点的坐标经常会是浮点数,而且点与点是连续的。所以绘制线段时需要把浮点数转换成整数,导致绘制的点偏离了准确的位置。这就是走样的原因。
最根本的消除走样的方法就是消除显示器的点距,但这是不现实的。因此人们试图从软件的角度解决这个问题,即“反走样算法”。
反走样算法是一种从视觉上消除走样的算法,基本原理是根据实际点的坐标将线的颜色和背景色进行混合,形成最终像素点的颜色。
从反走样的原理可知反走样的效率受三方面影响:
1.计算点的坐标的效率
2.混合颜色的效率
3.存取像素点颜色的效率
1、2两点取决于数学计算,第3点取决于操作系统提供的接口的效率。例如windows提供了GetPixel和SetPixel来存取像素的颜色,但这两个函数涉及到操作系统工作模式的切换,效率很低,所以快速存取像素很重要。