Заливка области цветом - 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;
}Решение задачи: «Заливка области цветом»
textual
Листинг программы
Point n =new Point(xPad,yPad) ; MK=maincolor.getRGB(); oldcolor=imag.getRGB(xPad,yPad); FloodFill(imag,n,MK,oldcolor);