Заливка области цветом - 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д