ALTERNATE和WINDING方式之间的区别很容易察觉。对于ALTERNATE方式,您可以设想从一个无穷大的封闭区域内部的点画线,只有假想的线穿过了奇数条边界线时,才填入封闭区域。这就是填入了星的角而中心没被填入的原因。五角星的例子使得WINDING方式看起来比实际上更简单一些。在绘制单个的多边形时,大多数情况下,WINDING方式会填入所有封闭的区域。但是也有例外。在WINDING方式下要确定一个封闭区域是否被填入,您仍旧可以设想从那个无穷大的区域画线。如果假想的线穿过了奇数条边界线,区域就被填入,这和ALTERNATE方式一样。如果假想的线穿过了偶数条边界线,则区域可能被填入也可能不被填入。如果一个方向(相对于假想线)的边界线数与另一个方向的边界线数不相等,就填入区域。看完后还是不懂A和W到底在什么情况下才填充,希望高手讲解下

解决方案 »

  1.   

    WINDOWS程序设计里那个五角星是怎么填充的完全搞不清思路
      

  2.   

    设置多边形的填充模式。参考GetPolyFillMode函数的注解 
    返回值 
    Long,如执行成功,返回前一种多边形填充模式。零表示出错 
    参数表 
    参数 类型及说明 
    hdc Long,设备场景的句柄 
    nPolyFillMode Long,下述常数之一: 
    ALTERNATE 交替填充 
    WINDING 根据绘图方向填充 
    填充模式1——ALTERNATE:为判断一个点是否位于填充区,windows会从这个点到图形外部画一条假想的线。每与一条线相交,计数器就会增1。如最后一个记数是奇数,则填充这个点;如果是偶数,则保留原样不变
    填充模式2——WINDING:为判断一个点是否位于填充区,windows会从这个点到图形外部画一条假想的线。windows会跟踪画出每个顶点(线段)的方向。这条假想的线每次穿过一个顶点时,而且顶点的Y方向为正,则减一个记数。如结果记数不是零,就表明该点位于填充区域
    我们要对所有的点都填充进来,使用Winding常数。看完了这个解说后我明白了.