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

Узнай цену своей работы

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

Создаю графический редактор, необходима функция заливки области цветом. Написал вот эту функцию согласно псевдокоду из Wikipedia, но она не работает. Подскажите пожалуйста в чем проблема.
Листинг программы
  1. public void FloodFill (BufferedImage ima, Point node, int fillcolor,
  2. int oldcolor){
  3. Queue <Point> Q = new LinkedList<Point> ();
  4. int x = node.x;
  5. int y = node.y;
  6. if ( ima.getRGB(x,y) != oldcolor){
  7. return; }
  8. Q.add(node);
  9. while(Q.isEmpty()==false){
  10. Point n;
  11. n=Q.element();
  12. int xx=n.x;
  13. int yy=n.y;
  14. if(ima.getRGB(xx, yy)==oldcolor){
  15. ima.setRGB(xx, yy,fillcolor);}
  16. Q.remove();
  17. if(ima.getRGB(xx-1, yy)==oldcolor){
  18. ima.setRGB(xx-1, yy,fillcolor);
  19. n.setLocation(xx-1, yy);
  20. Q.add(n);}
  21. if(ima.getRGB(xx+1, yy)==oldcolor){
  22. ima.setRGB(xx+1, yy,fillcolor);
  23. n.setLocation(xx+1, yy);
  24. Q.add(n);}
  25. if(ima.getRGB(xx, yy-1)==oldcolor){
  26. ima.setRGB(xx, yy-1,fillcolor);
  27. n.setLocation(xx, yy-1);
  28. Q.add(n);}
  29. if(ima.getRGB(xx, yy+1)==oldcolor){
  30. ima.setRGB(xx, yy+1,fillcolor);
  31. n.setLocation(xx, yy+1);
  32. Q.add(n);}
  33. }
  34. return;
  35. }

Решение задачи: «Заливка области цветом»

textual
Листинг программы
  1. Point n =new Point(xPad,yPad) ;                  
  2.          MK=maincolor.getRGB();
  3.          oldcolor=imag.getRGB(xPad,yPad);
  4.          FloodFill(imag,n,MK,oldcolor);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут