通过拖放单击网格视图?

时间:2013-01-24 07:34:27

标签: c# winforms image gridview

  

可能重复:
  Click and drag image to image grid?

我的表单中有几个图像框,我想知道如何在表格中放置一堆网格,这样整个网格就是一堆64 x 64的正方形。我需要它,所以我可以选择一个图像并使用鼠标将其放置在特定的方格上,并能够遍历整个网格并检查例如网格中有多少特定图像。为了让您更好地了解我正在做的是我有一些包含不同64 x 64图像的图像框。还有另一个图像框显示我最后点击的图像,就像一个画笔,因为无论何时左键单击网格中的一个框,它都会将其粘贴到网格中的特定框中。我也需要它,所以我可以右键单击该框并删除鼠标悬停在框中的图像。最后,我需要能够读取框中的所有图像并将其输出到我以后可以打开的文件中。我正在用它在游戏中创造土地,程序将输出所需的纹理,并且地面是构成整个地形的盒子。我需要知道的是,为了能够做到这一点,我应该做些什么?在过去的几个小时里,我一直在尝试如何制作盒子,以及如何知道鼠标在哪里和东西,我完全卡住了。一个简单的想法会有所帮助。我实际上不知道我应该使用什么控件,所以一个不涉及任何网格控件的想法仍然非常有帮助。

1 个答案:

答案 0 :(得分:0)

我不知道这是否是最好的想法,但你可以使用FlowLayoutPanel,WrapContent设置为true,FlowDirection = LeftToRight。虽然我不知道Drag& Drop操作(从未使用FlowLayoutPanel完成它,但是那里有一些很好的教程)。

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

您可以随时使用以下方式获得绝对位置:

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

然后,获得(当前)控件的相对位置:

Point relativeLoc = this.PointToClient(currentPos)

...然后,要控制鼠标在FlowLaoutPanel上的位置:

Control c = flowLayoutPanel1.GetChildAtPoint(relativeLoc);