Отменить Повторить с помощью FloodFill android

Я реализую заливку с помощью алгоритма заливки в Android, а для операции рисования мы можем реализовать отмену повтора с помощью path, но как добиться этого для операции заливки без DrawingCache? Есть ли способ получить объект Path, когда я выполняю операцию FloodFill?


person zek54    schedule 02.06.2016    source источник
comment
Самый простой способ - сохранить/кэшировать печатные копии ввода заливки (растровое изображение) или базовой модели растрового изображения в структуре кэша состояния, например. сериализуемая очередь. Если вы хотите иметь функцию отмены для каждого шага алгоритма заливки, вам нужно отредактировать этот алгоритм...   -  person Stilzk1n    schedule 02.06.2016
comment
Можете ли вы уточнить, как я могу изменить алгоритм, поскольку я хочу иметь возможность отменить каждый шаг и не создавать несколько копий растрового изображения.   -  person zek54    schedule 02.06.2016
comment
В алгоритме до: image.setPixel(x, y, замена); вы можете сохранить глубокую/твердую копию изображения в очереди отмены. Это предполагает, что вам нужно повторить весь алгоритм снова, потому что состояние (текущий узел) не будет сохранено таким образом... За исключением того, что у вас есть прослушиватель событий на растровом изображении, он не будет автоматически обновлять холст на все равно каждый setPixel...?   -  person Stilzk1n    schedule 02.06.2016
comment
Не будет ли это исключение из памяти, если я продолжу сохранять копию растровых изображений в очереди и не буду отменять какое-то время?   -  person zek54    schedule 02.06.2016
comment
Да, это была просто основная идея... Очевидно, из этой простой информации можно создать растровое изображение? createBitmap(int[] colors, int width, int height, Bitmap.Config config) Возвращает !!!неизменяемый!!! растровое изображение с указанной шириной и высотой, где каждому значению пикселя присвоено соответствующее значение в массиве цветов. Так что было бы нормально просто сохранить (в худшем случае сериализовать и сохранить в файл) эти части: цвета int [], int width, int height, конфигурация Bitmap.Config.   -  person Stilzk1n    schedule 02.06.2016
comment
Как получить цвета [] растрового изображения?   -  person zek54    schedule 02.06.2016
comment
Относительно developer.android.com/reference/android/graphics/Bitmap.html with getPixels(int[] пикселей, int offset, int step, int x, int y, int width, int height) Возвращает в Pixels[] копию данных в растровом изображении.   -  person Stilzk1n    schedule 02.06.2016
comment
Хорошо, спасибо за помощь.   -  person zek54    schedule 02.06.2016
comment
@ zek54 ты нашел решение? потому что у меня такая же ситуация!!!   -  person Harin Kaklotar    schedule 11.01.2017