Заливка области цветом - Java

Формулировка задачи:

Создаю графический редактор, необходима функция заливки области цветом. Написал вот эту функцию согласно псевдокоду из Wikipedia, но она не работает. Подскажите пожалуйста в чем проблема.
public void FloodFill (BufferedImage ima, Point node, int fillcolor,
                 int oldcolor){
             Queue <Point> Q = new LinkedList<Point> ();
             int x = node.x;
             int y = node.y;
             if ( ima.getRGB(x,y) != oldcolor){
                return;                       }
             Q.add(node);
             while(Q.isEmpty()==false){
                Point n;
                n=Q.element();
                int xx=n.x;
                int yy=n.y;
                if(ima.getRGB(xx, yy)==oldcolor){
                    ima.setRGB(xx, yy,fillcolor);}
                    Q.remove();
                   
                if(ima.getRGB(xx-1, yy)==oldcolor){
                    ima.setRGB(xx-1, yy,fillcolor);
                    n.setLocation(xx-1, yy);
                    Q.add(n);}
               
                if(ima.getRGB(xx+1, yy)==oldcolor){
                    ima.setRGB(xx+1, yy,fillcolor);
                    n.setLocation(xx+1, yy);
                    Q.add(n);}
               
                if(ima.getRGB(xx, yy-1)==oldcolor){
                    ima.setRGB(xx, yy-1,fillcolor);
                    n.setLocation(xx, yy-1);
                    Q.add(n);}
               
                if(ima.getRGB(xx, yy+1)==oldcolor){
                    ima.setRGB(xx, yy+1,fillcolor);
                    n.setLocation(xx, yy+1);
                    Q.add(n);}
             }
             return;
         }

Код к задаче: «Заливка области цветом - Java»

textual
Point n =new Point(xPad,yPad) ;                  
         MK=maincolor.getRGB();
         oldcolor=imag.getRGB(xPad,yPad);
         FloodFill(imag,n,MK,oldcolor);

13   голосов, оценка 4.231 из 5


СОХРАНИТЬ ССЫЛКУ
Похожие ответы