мой текущий проект свободного времени, чтобы погрузиться в WPF MVVM, является «цифровой» копией старой головоломки, в которую я часто играл в детстве. По сути, это простая головоломка, где нужно заполнить данное пространство кусками разного вида, чтобы заполнить все пространство. Но с дополнительным поворотом нахождения в шестиугольном пространстве.
Просто чтобы проиллюстрировать, вот как это выглядит в WPF:
http://img190.imageshack.us/img190/2553/atomgridmolecule.png
Таким образом, в основном есть ряд предопределенных фрагментов (например, оранжевого выше), которые можно «подключить» к данной сетке (серый элемент выше).
Таким образом, результат может выглядеть примерно так:
http://img30.imageshack.us/img30/2553/atomgridmolecule.png
Я хочу, чтобы пользователь (вероятно, только я ^^) мог перетаскивать фрагменты в сетку. Я хочу, чтобы перетаскивание выглядело естественным, имея правильное смещение при перетаскивании, в зависимости от того, где пользователь щелкнул фрагмент.
И сетка, и молекула - это один и тот же элемент управления, пользовательский элемент управления шестиугольной панели, полученный из класса панели WPF.
Проблема заключается в том, как выполнить «подключение» и особенно «отключение».
У меня есть две идеи о том, как я могу решить эту проблему:
- Просто закрасьте ячейки в сетке и скрыв оригинальную часть
- Pro:
- нулевая стоимость идеального выравнивания ячеек
- Минусы:
- Воссоздание фигуры в нужном месте с правильным смещением мыши при растягивании кажется невозможным? трудно сделать
- Привязать кусок к сетке и показать его сверху
- Pro:
- Перетаскивание - это простая операция перетаскивания, так же как перетаскивание в
- Неудобство:
- Каким-то образом выровнять кусок с базовой сеткой, какой-то щелчок
Так какой подход мне выбрать? Еще важнее, как я могу реализовать это в WPF? Особенно, используя чистый способ MVVM.
Большое спасибо за Вашу помощь! Любой вклад высоко ценится!
РЕДАКТИРОВАТЬ:
Спасибо Аран, я тоже так думал.
Но как мне на самом деле реализовать это сейчас?
- Как я могу получить координаты?
- Все оранжевые круги связаны, так как я могу «переместить» или, лучше сказать, «вставить» их как один кусок?