【发布时间】:2011-06-22 19:26:20
【问题描述】:
我正在尝试使用图片框在 C# 中制作一个 Tile-Map 编辑器(我能想到的将图块放入表单的最简单方法)
生成图片框的代码是:
public void Generate_Tiles(int width, int height)
{
for (int x = 0; x < width; x++)
{
for (int y = 0; y < height; y++)
{
System.Windows.Forms.PictureBox picturebox = new PictureBox();
picturebox.BackColor = SystemColors.ActiveCaption;
picturebox.Cursor = Cursors.Cross;
picturebox.Location = new System.Drawing.Point((x*32) + 4, (y*32) + 4);
picturebox.Name = x+y+"tile";
picturebox.Size = new System.Drawing.Size(32, 32);
picturebox.TabIndex = 0;
picturebox.TabStop = false;
picturebox.Click += new System.EventHandler(TileBox_Clicked));
map.Controls.Add(picturebox);
}
}
MessageBox.Show("Done");
}
只要我一次使用少量图片框(8 x 8 似乎是它想要在相当长的时间内显示的最大值),那部分就可以了
我想在用户单击指定的图片框时执行一些操作,这就是为什么我有一个 onclick 方法,这就是我遇到问题的地方,所有的图片框都被称为...图片框。据我所知,我无法判断用户点击了哪个图片框。
无论如何,我可能需要重新制作动态表单的工作方式,因为我无法获得很多图片框,但我认为主要问题仍然存在,只要我希望它是动态的(我这样做),并不是所有的瓦片地图的大小都是一样的。
我从来没有做过这样的事情,我一直在寻找覆盖 onclick 事件的方法......我找不到,而且我找不到一个可以使用最新的好磁贴引擎(除了 XNA,但我认为这对于一个简单的平铺编辑器来说有点过头了)
我可能会朝着相反的方向前进,然后我需要做的事情。
【问题讨论】: