我正在使用WPF Forms为我的游戏创建一个地图编辑器。 我有一个问题。如何将图块(图像)拖放到指定位置?
我会尽力详细说明我的需求。以此图片为例:
所以我想要的是每个图块 - 将由用户选择并拖动到网格区域 - 被“吸引”到单元格。明白了吗? 这样,用户就可以在其位置看到每个瓷砖。
有谁知道如何实现?
感谢。
答案 0 :(得分:2)
我不完全确定你是否要求“如何实现拖放?”或者“如何防止用户在指定位置以外的任何地方掉线?”,所以我试着提供一些关于两者的线索。
如何实施拖放?
要获得基本的拖放功能,您可以执行以下操作:
将所需拖动目标的AllowDrop属性设置为true。
连接OnMouseMove和MouseLeftButtonDown,以便能够检测到D& D操作的开始。 (此事件在System.Windows.UIElement中)
连接OnPreviewDragEnter,OnPreviewDragLeave,OnPreviewDragOver,OnPreviewDrop(此事件在System.Windows.DragDrop中)
然后你监听OnMouseMove和MouseLeftButtonDown,直到用户初始化一个拖动操作(即在按下鼠标左键时移动SystemParameters.MinimumHorizontalDragDistance或SystemParameters.MinimumVerticalDragDistance为宽)
此时您必须使用DragDrop.DoDragDrop初始化D& D操作
在初始化之后,您将监听上面列出的所有拖动事件,但是为了获得基本功能,它足以监听OnPreviewDrop。
如何防止用户在指定位置以外的任何地方掉线?
实施D& D功能后,实现这一目标非常简单。只需检查OnPreviewDrop的发件人是否是当前活动的放置目标,如果不是,则忽略放置事件。
更多强>
要查找更详细的信息,请访问此Drag and Drop Overview。 由于它是一款游戏,您可能希望在拖动时显示拖动的内容,您可以使用adorners来实现此目的。提供的示例不足以覆盖显示的拖动图像的预览,但谷歌列出了关于该主题的许多好例子。