正在加载图片...
Int m, n, ymin, ymax double x,y, k, for m=,n=H+1 if(7=n)n=0 k(double(Point [m]. x-Point [n].x)(Point [m]-y-Point [nl-y) //t. 1/k; if( Point [ m]y< Point [n]y)/得到每条边y的最大和y最小值 ymin= Point [m]y ymax= Point [ n]y; x=Point m].X ∥得到 lyman ymin= Point [n]y; ymax= Point [ m]y x=Point n].X For (y=ymin y<ymax: y++) For(intj= ROUND(x)j< Maxx:j++)〃/对每一条扫描线与边的交点的右侧像素循环 If(dc. GetPixel(, ROUND(y)= FillColor∥/如果像素的颜色是填充色 dc SetPixel, ROUND(y) CBack Color)/改为背景色 else dc SetPixel(i, ROUND(y) Fillcolor)/改为填充色 x+=k;∥计算下一个x起点值 Draw Polygon∥绘制多边形函数 CClientdC dc(this for(int =0 j<=6: j++)int m,n,ymin,ymax; double x,y,k; for (int i=0; i<=6; i++) { m=i,n=i+1; if (7==n) n=0; k=(double (Point [m].x- Point [n].x)/ (Point [m].y- Point [n].y);//计算 1/k; if ((Point [m].y< Point [n].y) //得到每条边 y 的最大和 y 最小值 { ymin= Point [m].y; ymax= Point [n].y; x=Point [m].x; //得到 x|ymin } else { ymin= Point [n].y; ymax= Point [m].y; x=Point [n].x; } For (y=ymin;y<ymax;y++) { For(int j=ROUND(x);j<MaxX;j++)//对每一条扫描线与边的交点的右侧像素循环 { If(dc.GetPixel(j, ROUND(y)==FillColor)//如果像素的颜色是填充色 { dc.SetPixel(j, ROUND(y),CBackColor);//改为背景色 } else { dc.SetPixel(j, ROUND(y),FillColor);//改为填充色 } } x+=k; //计算下一个 x 起点值 } } } DrawPolygon() //绘制多边形函数 { CClientDC dc(this); int m,n; for (int j=0;j<=6;j++)
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有