如何在android应用程序中实现扫描线多边形填充算法?

如何在android应用程序中实现扫描线多边形填充算法?,android,polygon,Android,Polygon,我想创建一个android应用程序,其中扫描线多边形填充算法用于填充它 我已经用线画出了多边形 画了4条线 我用过这个代码 类DrawView扩展了视图{ Paint paint = new Paint(); public DrawView(Third_Activity third_Activity) { super((Context) third_Activity); paint.setColor(Color.RED); pai

我想创建一个android应用程序,其中扫描线多边形填充算法用于填充它

我已经用线画出了多边形

画了4条线

我用过这个代码

类DrawView扩展了视图{

    Paint paint = new Paint();

    public DrawView(Third_Activity third_Activity) {
        super((Context) third_Activity);
        paint.setColor(Color.RED);
        paint.setStrokeWidth(5);

    }

    @Override
    public void onDraw( Canvas canvas) {
         super.onDraw(canvas);
            canvas.drawLine(250, 100, 100, 402, paint);
            canvas.drawLine(99, 400, 150, 500, paint);
            canvas.drawLine(150, 500, 300, 600, paint);
            canvas.drawLine(300, 600, 250, 100, paint);

            a[0][0]=250;
            a[0][1]=100;

            a[1][0]=100;
            a[1][1]=402;

            a[2][0]=99;
            a[2][1]=400;

            a[3][0]=150;
           a[3][1]=500;

           a[4][0]=150;
          a[4][1]=500;

          a[5][0]=300;
         a[5][1]=600;

         a[6][0]=250;
        a[6][1]=100;

        a[7][0]=150;
       a[7][1]=500;


           for(i=0;i<7;i++)
           {
            dy=a[i+1][1]-a[i][1];
            dx=a[i+1][0]-a[i][0];
            if(dy==0)
                slope[i]=(float) 1.0;
            if(dx==0)
                slope[i]=(float) 0.0;
            if((dy!=0)&&(dx!=0))
            {
               slope[i]=(float)dx/dy;
            }
           }

            for(y=0;y<900;y++)
            {
             k=0;
             for(i=0;i<7;i++)
             {
            if(((a[i][1]<=y) && (a[i+1][1]>y)) || ((a[i][1]>y) && (a[i+1][1]<=y)))
            {
                xi[k]=(int)(a[i][0]+slope[i] *(y-a[i][1]));
                k++;
            }
             }
             for(j=0;j<k-1;j++)
             for(i=0;i<k-1;i++)
             {
               if(xi[i]>xi[i+1])
               {
                  temp=xi[i];
                  xi[i]=xi[i+1];
                  xi[i+1]=temp;
               }
             }


             for(int p=0;p<10;p++)
             {
                 canvas.drawLine(100,700, 200, 700, paint);

                 for(i=0;i<k;i+=2)
                 {

                canvas.drawLine(xi[i],y,xi[i+1],y,paint);

                 }   
             }

          }

    }
油漆=新油漆();
公共绘图视图(第三个活动第三个活动){
超级((上下文)第三次_活动);
油漆。设置颜色(颜色。红色);
油漆。设置行程宽度(5);
}
@凌驾
公共空白onDraw(画布){
super.onDraw(帆布);
帆布.抽绳(250100100402,油漆);
帆布.抽绳(99400150500,油漆);
帆布.抽绳(150500300600,油漆);
帆布.抽绳(300600250100,油漆);
a[0][0]=250;
a[0][1]=100;
a[1][0]=100;
a[1][1]=402;
a[2][0]=99;
a[2][1]=400;
a[3][0]=150;
a[3][1]=500;
a[4][0]=150;
a[4][1]=500;
a[5][0]=300;
a[5][1]=600;
a[6][0]=250;
a[6][1]=100;
a[7][0]=150;
a[7][1]=500;

对于(i=0;只包含重要代码),代码有什么错误?输出除外?您能在问题中更具体吗?这个代码画了一些线……并用它的一些线填充了多边形(那行)……我想添加延迟……就像我们在C或C++中那样做。