实现的功能:画圆,填充颜色。最好是具体点的,如果有几个不同的算法最好。

解决方案 »

  1.   

    楼主,你到底是要画圆的算法 还是要实现一个画圆的功能?
    如果是算法的话,现在比较常用的是Bresenham算法.代码如下:
        public static void drawCircle(Graphics g,int x0,int y0 ,int r){
            int x = 0;
            int y = r;
            int d = 3 - 2 * r;
            while(x < y){
                copyPot(g,x0,y0,x,y);
                if(d<0)
                    d += 4 * x + 6;
                else{
                    d += 4 * (x-y) + 10;
                    y --;
                }
                x ++;
            }
            if(x == y)
                copyPot(g,x0,y0,x,y);
        }
        
        private void copyPot(Graphics g,int x0,int y0,int x,int y){
            g.drawLine(x0+x,y0+y,x0+x,y0+y);
            g.drawLine(x0+y,y0+x,x0+y,y0+x);
            g.drawLine(x0+y,y0-x,x0+y,y0-x);
            g.drawLine(x0+x,y0-y,x0+x,y0-y);
            g.drawLine(x0-x,y0-y,x0-x,y0-y);
            g.drawLine(x0-y,y0-x,x0-y,y0-x);
            g.drawLine(x0-y,y0+x,x0-y,y0+x);
            g.drawLine(x0-x,y0+y,x0-x,y0+y);
        }
    好象Java中没有画点的算法,所以用画两个具有相同端点的画县函数来代替.如果是实现一个画圆的功能,那就可以直接使用Graphics类中的drawOval(int x,int y,int w,int h),fillOval(int x,int y,int w,int h)来实现,具体方法是:监听MouseListener 和 MouseMotionListener 鼠标按下是记录坐标x1,y1.  鼠标移动的时候记录坐标x2,y2.调用g.drawOval(x1,y1,Math.abs(x1-x2),Math.abs(y1-y2))来画圆,并且repaint().大概是这样了.
      

  2.   

    lz啊,你的问题也太抽象了吧?
    都没搞明白你想干什么,给点context行不?