В настоящее время мы создаем простое приложение для манипулирования изображениями в Silverlight, и мы натолкнулись на некоторую загадку. Мы хотим, чтобы пользователи могли выбирать область изображения (либо рисуя линию от руки вокруг выбранной области, либо создавая вокруг нее многоугольник), а затем могли применять эффекты к пикселям в этом выделении.
Создание набора изображений достаточно просто, но нам нужен действительно быстрый алгоритм для определения того, какими пикселями следует манипулировать (т. Е. что-то, чтобы определить, какие пиксели находятся в пределах выбора пользователя ).
Мы уже думали о трех возможностях, но мы уверены, что должен быть действительно эффективный и быстрый способ сделать это лучше, чем они.
1. Пиксель за пикселем.
Мы просто просматриваем каждый пиксель изображения и проверяем, находится ли он в пределах выбора пользователя. Очевидно, это слишком медленно!
2. Использование алгоритма пересечения линии.
Тип вещи , замеченный здесь .
3. Заполнение наводнения.
Выберите пиксели вдоль пути выделения, а затем выполните заливку в этом выделении. Это может нормально работать.
Это, должно быть, проблема, которая обычно решается, поэтому мы предполагаем, что есть гораздо больше решений, о которых мы даже не думали.
Что бы вы порекомендовали?