为了深入了解WPF MVVM,我目前的自由时间项目是一个我以前在童年时玩过很多游戏的“数字”副本。它基本上是一个简单的难题,人们必须用不同种类的部件填充给定的空间,这样才能填满整个空间。但随着在六角空间的额外扭曲。WPF捕捉控件
只是为了说明这一点,这是它目前看起来像WPF:
http://img190.imageshack.us/img190/2553/atomgridmolecule.png
所以基本上有一些预定义的块(如上面的橙色一个),它可以“插入”给定的网格(上面的灰色东西)。
那么结果可能是这个样子:
http://img30.imageshack.us/img30/2553/atomgridmolecule.png
我希望用户(大概只有我^^),以能够拖动和碎片落入电网。我希望拖动具有正确偏移的自然含义,同时拖动取决于用户点击该部分的位置。
网格和分子都是相同的控件,这是一个从WPF Panel类派生的自定义六边形面板控件。
问题在于如何做“插入”,特别是“拔掉”。
我有我怎样处理这两个想法:
- 不仅仅是简单的颜色的单元网格和隐藏原片
- 临:中
- 零成本完美对齐电池
- 缺点:
- 如果拖出的话,用正确的鼠标偏移量在正确的位置重新创建该片段似乎不可能?很难做到
- 临:中
- 捕捉片到电网,并显示在顶部
- 临:
- 拖出是一个简单的拖动操作,就像在
- 缺点:
- 无论如何都必须对准该片与基础网格,某种抢购
- 无论如何都必须对准该片与基础网格,某种抢购
- 临:
所以我应该采取哪种方法?更重要的是,我甚至可以在WPF中实现这个功能?特别是使用干净的MVVM方式。
非常感谢您的帮助!任何意见都非常感谢!编辑:
谢谢亚兰,我也这么认为。
但是我现在怎么实际执行这个?
- 我怎样才能真正获得坐标?
- 所有的橙色圆圈都是相互关联的,所以我怎样才能“移动”或者更好地将它们“插”在一起?
我会这样做 - 在后面的代码中,观察每个橙色圆上的结束鼠标单击事件,然后将橙色圆圈x,y与所有灰色圆圈x,y的列表进行比较。通过调整橙色圆圈x,y来捕捉到最近的点。 – 2009-07-02 01:52:40