2017-10-14 8 views
-1

Je travaille avec mon projet avec des fonctions paiting/coloring. Est-ce que quelqu'un peut expliquer cet algorithme de remplissage d'inondation et comment cela fonctionne? Cette file d'attente est-elle remplie? et que signifie la file d'attente (dans cet algorithme)?Explication du remplissage d'inondation

public class FloodFill { 
    public void floodFill(Bitmap image, Point node, int targetColor, 
          int replacementColor) { 
     int width = image.getWidth(); 
     int height = image.getHeight(); 
     int target = targetColor; 
     int replacement = replacementColor; 
     if (target != replacement) { 
      Queue<Point> queue = new LinkedList<Point>(); 
      do { 

       int x = node.x; 
       int y = node.y; 
       while (x > 0 && image.getPixel(x - 1, y) == target) { 
        x--; 

       } 
       boolean spanUp = false; 
       boolean spanDown = false; 
       while (x < width && image.getPixel(x, y) == target) { 
        image.setPixel(x, y, replacement); 
        if (!spanUp && y > 0 
          && image.getPixel(x, y - 1) == target) { 
         queue.add(new Point(x, y - 1)); 
         spanUp = true; 
        } else if (spanUp && y > 0 
          && image.getPixel(x, y - 1) != target) { 
         spanUp = false; 
        } 
        if (!spanDown && y < height - 1 
          && image.getPixel(x, y + 1) == target) { 
         queue.add(new Point(x, y + 1)); 
         spanDown = true; 
        } else if (spanDown && y < height - 1 
          && image.getPixel(x, y + 1) != target) { 
         spanDown = false; 
        } 
        x++; 
       } 
      } while ((node = queue.poll()) != null); 
     } 
    } 
} 
+0

Que voulez-vous savoir? Actuellement, vous dessinez sur un bitmap basé sur la position sur l'écran et la couleur. –

+0

Ok, quels sont exactement vos Westin pouvez-vous s'il vous plaît dans les balles séparément –

+0

je veux savoir quel type de remplissage d'inondation est utilisé. –

Répondre