Показать сообщение отдельно
Старый 09.05.2013, 19:38
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 9  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Нормальное решение:
1 При проведении стиралкой при каждом смещении мыши запоминаем положение курсора - получаем список точек.
2 При каждом смещении мыши в процессе ведения перерисовываем по этим точкам (зная размеры и форму стиралки) область цветом фона
3 После отпускания мыши строим по этому списку точек (зная размеры и форму стиралки) контур (просто список точек этого контура по/против часовой стрелке скорее всего)
4 Усиленно и люто гуглим алгоритмы обрезания прямых контуром
5 Берём список всех нарисованных прямых и режем каждую этим контуром, удаляя попавшие в контур и добавляя обрезки, не попавшие в контур.
6 перерисовываем все прямые по новым данным.

Примечание:
Ещё можно не искать контур, а сделать N разрезов - сколько было перемещений мыши простым квадратом (если стиралка квадратная). Может даже сразу при перемещении резать. Но это не так гладко будет смотреться. (Чтобы разрезать линию квадратом школьной математики то должно хватить, хотя попотеть придётся, там в условиях главное не запутаться)

Решение попроще:
1, 2 То же, что и в нормальном решении
3 Оставляем этот закрашенный контур как есть, не удаляя его с экрана (или перерисовываем на тот же слой, где линии)

Решение попроще с возможностью менять цвет фона потом:
Похоже на решение попроще, но теперь надо
Цитата:
смешивания ERASE пользовать для стерки
А это значит, что придётся организовать хитрую вложенность спрайтов, чтобы через стёртую область просвечивал фон.