Алгоритм заливки замкнутого контура (FloodFill). Android. Java

572
08 февраля 2017, 23:51

Здравствуйте. Хочу реализовать заливку на Java под Android. Имею такой вот алгоритм:

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);
        }
    }
}

Но проблема в том, что края изображения остаются не залитыми. Сглаживание линий отключено. Изображение рисую в Paint черным цветом, без всяких оттенков серого. Может кто сталкивался с такой проблемой и знает решение?

READ ALSO
Запись SMS/inbox Android &gt;= 4.4

Запись SMS/inbox Android >= 4.4

Имеется код:

290
Проблема с кнопками в Table LibGDX

Проблема с кнопками в Table LibGDX

В общем, проблема заключается в следующем: при добавлении кнопок на Table возникает сдвиг их области нажатияНа рисунке 1

427
работа с MySql Java

работа с MySql Java

есть вот такой код, мне надо сделать общий запрос sql в базу данных, чтобы он работал в моих разных методах

357
Объявление интерфейса в интерфейсе

Объявление интерфейса в интерфейсе

Тело интерфейса может объявлять члены интерфейса, те

314