如何将图块(图像)拖放到指定位置? WPF

时间:2011-06-16 12:56:10

标签: .net wpf user-interface

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

我会尽力详细说明我的需求。以此图片为例:

IMAGE

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

有谁知道如何实现?

感谢。

1 个答案:

答案 0 :(得分:2)

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

如何实施拖放?

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

  • 将所需拖动目标的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来实现此目的。提供的示例不足以覆盖显示的拖动图像的预览,但谷歌列出了关于该主题的许多好例子。