用VC++6.0实现的扫描线填充,裁剪算法及画线方法 CPenpen(PS_SOLID,1,fillcolor);//设置扫描线所用笔的属性 CPen*old=pDC->SelectObject(&pen);  intj,k,s=0; intp[9];//每根扫描线交点 intpmin=1000; intpmax=0;   for(inti=0;i<inLength;i++)//建立边表 {  edge[i].dx=(float)(inVertexArray[i+1].x-inVertexArray[i].x)/(inVertexArray[i+1].y-inVertexArray[i].y);  edge[i].num=i;  if(inVertexArray[i].y<=inVertexArray[i+1].y)  {   edge[i].ymin=inVertexArray[i].y;   edge[i].ymax=inVertexArray[i+1].y;   edge[i].xmin=(float)inVertexArray[i].x;   edge[i].xmax=(float)inVertexArray[i+1].x;   }  else{   edge[i].ymin=inVertexArray[i+1].y;   edge[i].ymax=inVertexArray[i].y;   edge[i].xmax=(float)inVertexArray[i].x;   edge[i].xmin=(float)inVertexArray[i+1].x;   }   }  //求多边形的最大最小值 for(intm=1;m<inLength;m++) {  for(intn=0;n<inLength-m;n++)  {    if(pmaxinVertexArray[n].y)     pmin=inVertexArray[n].y;  } } for(intr=1;r<inLength;r++) //边表edge排序 {  for(intq=0;q<inLength-r;q++)  {   if(edge[q].yminpmin;scan--)//扫描线遵守'“上开下闭”的原则 {  intb=0;  k=s;  for(j=k;j=edge[j].ymin)&&(scan<=edge[j].ymax))//判断扫描线与线段是否相交于顶点      {    intpreNum=edge[j].num;    intnextNum=edge[j].num+1;    if(preNum==0)     preNum=inLength-1;    else     preNum=preNum-1;    if(nextNum==inLength)     nextNum=0;    if(scan==edge[j].ymax)//位于下顶点时,根据相临点的位置决定取几个点    {     if(inVertexArray[nextNum].y<edge[j].ymax)     {      b++;      p[b]=(int)edge[j].xmax;     }     if(inVertexArray[preNum].yedge[j].ymin)&&(scan<edge[j].
                                    
                                    
                                        
                                            1