【问题标题】:How can I drag and drop a tile(image) into a specified place? WPF如何将图块(图像)拖放到指定位置? WPF
【发布时间】:2011-06-16 12:56:10
【问题描述】:

我正在使用 WPF 表单为我的游戏创建地图编辑器。 我有一个问题。如何将图块(图像)拖放到指定位置?

我会尽量详细说明我的需求。以这张图片为例:

所以我想要的是每个图块 - 将由用户选择并拖动到网格区域 - 被“吸引”到一个单元格。明白了吗? 这样用户就可以在其位置看到每个图块。

有人知道如何实现吗?

谢谢。

【问题讨论】:

    标签: .net wpf user-interface


    【解决方案1】:

    我不完全确定您是否在询问“如何实现拖放?”或“如何防止用户在指定位置以外的任何地方掉线?”,所以我尝试提供一些关于两者的线索。

    如何实现拖放?

    要获得基本的拖放功能,您可以执行以下操作:

    • 将所需拖动目标的 AllowDrop 属性设置为 true。

    • 连接 OnMouseMove 和 MouseLeftButtonDown 以便能够检测 D&D 操作的开始。 (此事件在 System.Windows.UIElement 中)

    • 连接 OnPreviewDragEnter、OnPreviewDragLeave、OnPreviewDragOver、OnPreviewDrop(此事件在 System.Windows.DragDrop 中)

    • 然后您监听 OnMouseMove 和 MouseLeftButtonDown,直到用户初始化拖动操作(即在按下鼠标左键时移动 SystemParameters.MinimumHorizo​​ntalDragDistance 或 SystemParameters.MinimumVerticalDragDistance 宽度)

    • 此时您必须使用 DragDrop.DoDragDrop 初始化 D&D 操作

    • 初始化后,您将监听上面列出的所有拖动事件,但要获得基本功能,监听 OnPreviewDrop 就足够了。

    如何防止用户在指定位置以外的任何地方掉线?

    在您实现了 D&D 功能之后,实现这一点非常简单。只需检查 OnPreviewDrop 的发送者是否是当前活动的放置目标,如果不是则忽略放置事件。

    更多

    要查找更多详细信息,您应该访问此Drag and Drop Overview。 由于这是一款您可能希望在拖动时显示拖动内容的游戏,您可以通过adorners 实现此目的。提供的示例不足以显示拖动图像的预览,但 google 列出了许多关于该主题的好示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-21
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2011-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多