Java

Paint. Применяемые алгоритмы и структуры данных.

Хочу написать свой пейнт на андроид. Основные требования - функционал, как у стандартного MS-овского со слоями, скорость и разумное потребление памяти.
Для этого наверняка понадобятся какие-то заумные алгоритмы, особенно если речь идёт о ресурсоёмких особенностях, вроде заливки больших областей, хранения в памяти крупных изображений, слоёв и хранение предыдущих действий для отмены/возврата.
Кто-нибудь может подбросить статейку?
СИ
Сфу Иси
50 628
Структуры данных и алгоритмы служат теми материалами, из которых строятся программы. ..Структуры данных, применяемые в алгоритмах, могут быть чрезвычайно сложными.
Алгоритмы и структуры данных Вычислительная сложность Вычислительная сложность — … ...Структуры данных обеспечивают возможность использования того или иного алгоритма.
study-and-dev.com›blog/sda_theory_intro/
Александр Дю
Александр Дю
85 997
Лучший ответ
Сфу Иси Не совсем то. Я имел в виду примерно те, которые могут применяться при реализации вышеописанных возможностей.
учитесь гуглить и будете находить себе десятки разных статеек.

заливка замкнутой области - это floodfill называется. действительно алгоритм не самый простой - пробуйте разные варианты, сравнивайте, изучайте, пишите сами...

слои и хранение действий - делаются очень просто. для этого нужно, чтобы изображение в памяти хранилось не в виде Bitmap (который, ессно, слоев не поддерживает) - а в векторном виде, т. е. коллекция объектов в том порядке, в каком они созданы юзером (скажем наследников класса Shape - объекты классов Rectangle, Ellipse, Circle, Line и т. д.) а при отрисовке уже так или иначе визуализировались эти объекты.
одного этого достаточно, чтобы снизить потребление ОЗУ (а то прикиньте, если для undo каждый этап хранить отдельной картинкой целиком) - любой вектор всегда легче растра, тем более точечного, и чем больше размер картинки - тем больше разница.
и со слоями и undo проблем нет - undo - просто удаляем из коллекции последний объект - и все.
Serdar Meredov
Serdar Meredov
26 662
https://ru.wikipedia.org/wiki/Заливка

я в этой всей байде не силен, но мб поможет