最近看Windows程序设计,请问多边形填充方式的ALTERNATE和WINDING具体怎么区别?书上的解释看得不是很明白,请高手指点

解决方案 »

  1.   

    在ALTERNATE模式下,显示器的每个扫描行都是从左到右扫描,系统只填充每个扫描行遇到的多边形的奇数边(第一、第二、第三   。)和偶数边之间的部分,不填充偶数边到奇数边之间的部分  
       
      在WINDING模式下:用一笔画一个矩型,矩型的顶点为a、b、c、d,   画的顺序可以为 a 到b 到 c 到 d 到 a  或者 a 到d  到 c 到 b 到 a,这就是多边型中画每个线段时的方向(clockwise or a counterclockwise);  
      画一条直线M,再画一些与M相交的线段,画线段时只有两种情况:从直线(N)的一边(左边)到直线的另一边(右边),假如从直线N的左边到右边为 clockwise,从直线N的右边到左边为counterclockwise,计数count为零。现有线段FH、KL、TG   与直线(N)相交,FH从直线N的左边到直线N的右边,count加1=1;KL从直线N的右边到直线N的左边,count减1=0;TG从直线N的左边到直线N的右边count加1=1;此时the count is  nonzero,  
      再到上面多边形填充,从要判断一个区域E是否要被填充,从该区域画一线段N到整个多边型区域外,按照上面的方法进行count的计数,如果count非零则区域E要被填充,否则不填充。    
      注:每个多边型都是一笔画出的,所以多边型中每个线段都有唯一的方向(clockwise   or   a   counterclockwise)