Я новичок в программировании на Android, и недавно я попытался написать простое приложение, просто для практики! В этом я хочу покрасить изображение при нажатии на пользователя, но я не знаю, как его запустить. Я читал разные темы, которые говорят, что нужно использовать алгоритм "Наполнение потоком". Я нашел его в Интернете, но я не знаю, как его включить в мое простое приложение.
Код, который я нашел:
private void FloodFill(Bitmap bmp, Point pt, int targetColor, int replacementColor)
{
Queue<Point> q = new LinkedList<Point>();
q.add(pt);
while (q.size() > 0) {
Point n = q.poll();
if (bmp.getPixel(n.x, n.y) != targetColor)
continue;
Point w = n, e = new Point(n.x + 1, n.y);
while ((w.x > 0) && (bmp.getPixel(w.x, w.y) == targetColor)) {
bmp.setPixel(w.x, w.y, replacementColor);
if ((w.y > 0) && (bmp.getPixel(w.x, w.y - 1) == targetColor))
q.add(new Point(w.x, w.y - 1));
if ((w.y < bmp.getHeight() - 1) && (bmp.getPixel(w.x, w.y + 1) == targetColor))
q.add(new Point(w.x, w.y + 1));
w.x--;
}
while ((e.x < bmp.getWidth() - 1) && (bmp.getPixel(e.x, e.y) == targetColor)) {
bmp.setPixel(e.x, e.y, replacementColor);
if ((e.y > 0) && (bmp.getPixel(e.x, e.y - 1) == targetColor))
q.add(new Point(e.x, e.y - 1));
if ((e.y < bmp.getHeight() - 1) && (bmp.getPixel(e.x, e.y + 1) == targetColor))
q.add(new Point(e.x, e.y + 1));
e.x++;
}
}
}
Я знаю, как рисовать линии на экране после пальца пользователя на сенсорном событии, но я также хотел бы знать, как заполнить данное изображение каким-то цветом, например:
Я видел эти другие вопросы о переполнении стека:
Кажется, так легко сделать, но я не могу! Можете ли вы показать мне небольшой пример, пожалуйста? Я хотел бы знать, как установить холст, изображение для цвета и как это сделать.