2013-01-24 51 views
0

可能重复:
Click and drag image to image grid?用拖放单击网格视图?

我在我的形式几个像箱子,我想知道我怎么会放置一个网格跨有一堆线这样的形式整个网格是一堆64×64的正方形。我需要它,所以我可以选择一个图像,并使用鼠标将其放置到特定的正方形上,并能够浏览整个网格,并检查网格上某个特定图像的数量。为了让你更好地了解我在做什么,我有几个图像框包含不同的64 x 64图像。还有另一个图像框显示我最后点击的图像,这就像一个画笔,因为每当你点击网格中的一个盒子时,它就会将其粘贴到网格中的特定框中。我也需要它,所以我可以右键单击该框并删除鼠标结束框中的图像。最后,我需要能够读取框中的所有图像并将其输出到一个文件中,以便以后打开。我使用它来创建游戏中的土地,该程序将输出所需的纹理,以及构成整个地形的箱子的地面高度。我需要知道的是我应该做些什么才能做到这一点?在过去的几个小时里,我一直在试图制作盒子,以及如何知道鼠标的位置和内容,而且我完全陷入困境。一个简单的想法会有帮助。实际上我不知道我应该使用什么控件,所以一个不涉及任何网格控件的想法仍然非常有用。

+0

由于你前面的问题得到了关闭,你只是转贴ŧ他整件事? – ryadavilli

+0

我上次没有正确解释它,它看起来像我要求某人为我写代码。 – userPIZZAnow

回答

0

我不知道这是否是最好的想法,但可以使用FlowLayoutPanel和WrapContent设置为true并且FlowDirection = LeftToRight。我不知道拖动&拖放操作虽然(从来没有用FlowLayoutPanel完成,但有一些很好的教程)。

您可以使用鼠标事件跟踪鼠标位置。如果你不想这样做:

可以使用获得在任何时候绝对位置:

Point currentPos = System.Windows.Forms.Cursor.Position; 

然后,让你的(当前)控制的相对位置:

Point relativeLoc = this.PointToClient(currentPos) 

...然后,获得控制权,你的鼠标是FlowLaoutPanel:

Control c = flowLayoutPanel1.GetChildAtPoint(relativeLoc);