Как перетащить с одного HTML5-холста на другой - PullRequest
4 голосов
/ 05 января 2011

Я пытаюсь понять, как перетащить изображение с одного холста на другой холст.Предполагая, что полотна находятся рядом друг с другом, можно ли было бы плавно перетащить что-нибудь через границу?Если нет, то лучше ли перетаскивать div по холсту, получать его идентификатор и размещать его, реагируя на местоположение mouseup на холсте?

Ответы [ 4 ]

4 голосов
/ 05 января 2011

Вы не перетаскиваете предметы на холст.Холст - это графический интерфейс без сохранения (или немедленный режим ).Вы запускаете команды рисования и получаете пиксели.Имитация перетаскивания состоит из отслеживания движений мыши пользователя и выбора многократной очистки и повторного рисования холста с различными параметрами, чтобы некоторые подмножества пикселей выглядели как сплоченный объект.

Сравните этос HTML или SVG, где вы фактически изменяете свойства позиции / преобразования реального объекта DOM и наблюдаете, как визуальное представление вашего документа обновляется автоматически.

Если у вас есть два холста и вы хотите что-то перетащить изодно к другому, что я бы сделал:

  1. Наведя указатель мыши на холст «меню», программно создайте новый холст размером с объект и поместите (используя абсолютное позиционирование CSS)он поверх элемента, на который щелкнул пользователь.
  2. Нарисуйте элемент на этом холсте.
  3. Отслеживайте событие mousemove в документе и обновляйте положение холста относительномышь.
  4. Когда пользователь отпускает мышь над целевым холстом, выбрасываетr скрыть) ваш крошечный «перетаскивающий» холст и заново нарисовать основной холст с помощью элемента, который был перетащен в соответствующее место.

Хотя, вероятно, я бы использовал здесь SVG,;)

2 голосов
/ 14 ноября 2013

это было очень полезно для меня:

это источник и демонстрация: http://www.rgraph.net/blog/2013/january/an-example-of-html5-canvas-drag-n-drop.html

0 голосов
/ 10 декабря 2014

Проверьте этот ответ. Это для множественного выбора перетаскивания, но, возможно, будет полезно.

0 голосов
/ 05 января 2011

Почему это должно быть 2 холста?Холст - это ваша область рисования, вы управляете ею.Зачем тебе 2?

...