Вы не перетаскиваете предметы на холст.Холст - это графический интерфейс без сохранения (или немедленный режим ).Вы запускаете команды рисования и получаете пиксели.Имитация перетаскивания состоит из отслеживания движений мыши пользователя и выбора многократной очистки и повторного рисования холста с различными параметрами, чтобы некоторые подмножества пикселей выглядели как сплоченный объект.
Сравните этос HTML или SVG, где вы фактически изменяете свойства позиции / преобразования реального объекта DOM и наблюдаете, как визуальное представление вашего документа обновляется автоматически.
Если у вас есть два холста и вы хотите что-то перетащить изодно к другому, что я бы сделал:
- Наведя указатель мыши на холст «меню», программно создайте новый холст размером с объект и поместите (используя абсолютное позиционирование CSS)он поверх элемента, на который щелкнул пользователь.
- Нарисуйте элемент на этом холсте.
- Отслеживайте событие
mousemove
в документе и обновляйте положение холста относительномышь. - Когда пользователь отпускает мышь над целевым холстом, выбрасываетr скрыть) ваш крошечный «перетаскивающий» холст и заново нарисовать основной холст с помощью элемента, который был перетащен в соответствующее место.
Хотя, вероятно, я бы использовал здесь SVG,;)