gpt4 book ai didi

c# - WPF 捕捉控件

转载 作者:可可西里 更新时间:2023-11-01 09:15:57 25 4
gpt4 key购买 nike

为了深入研究 WPF MVVM,我目前的空闲时间项目是我童年经常玩的一个老谜题的“数字”副本。它基本上是一个简单的谜题,其中必须用不同种类的碎片填充给定空间,以便填满整个空间。但是在六边形空间中有额外的扭曲。

只是为了说明,这是它当前在 WPF 中的样子:

http://img190.imageshack.us/img190/2553/atomgridmolecule.png

所以基本上有许多预定义的部分(如上面的橙色部分)可以“插入”给定的网格(上面的灰色部分)。

所以结果可能是这样的:

http://img30.imageshack.us/img30/2553/atomgridmolecule.png

我希望用户(可能只有我^^)能够将片段拖放到网格中。我希望拖动看起来自然,这意味着在拖动时根据用户单击该片段的位置具有正确的偏移量。

grid 和 molecule 都是同一个控件,一个自定义的六边形面板控件,派生自 WPF 的 Panel 类。

问题在于如何“插”,尤其是“拔”。

关于如何解决这个问题,我有两个想法:

  1. 只需为网格中的单元格着色并隐藏原始部分
    • 优点:
      • 零成本完美对齐细胞
    • 缺点:
      • 如果拖出,用正确的鼠标偏移在正确的位置重新创建作品,这似乎不可能?很难做到
  2. 将棋子对齐网格并将其显示在顶部
    • 优点:
      • 拖出是简单的拖动操作,和拖入一样
    • 缺点:
      • 必须以某种方式将棋子与底层网格对齐,某种捕捉

那么我应该采用哪种方法呢?更重要的是我什至如何在 WPF 中实现它?特别是使用干净的 MVVM 方式。


非常感谢你的帮助!非常感谢任何意见!

编辑:
谢谢阿兰,我也是这么想的。

但我现在该如何实际实现呢?

  • 我怎样才能真正获得坐标?
  • 所有橙色圆圈都是相连的,那么我怎样才能“移动”或更好地“插入”它们作为一个整体?

最佳答案

我倾向于第二种想法。一个简单的捕捉只是为了测试您拖动的圆的中心点是否在网格上圆的某个容差因子内,如果是,则捕捉它们。

关于c# - WPF 捕捉控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1063338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com