使用picturebox或类似控件制作2d tile编辑器

时间:2012-04-10 16:19:08

标签: c# bitmap picturebox

我正在制作一个带方形拼贴的2D游戏,是时候制作一个好的地图编辑器了。

之前我曾尝试使用DataGridView,但事实证明它是超级的。

我发现应该有另一种方法来绘制图块(实际图像或彩色背景)及其参数(在文本中)。图片框!

是否有一种简单的方法可以访问像素数组,在所需坐标处插入平铺图像,获取指针坐标和所有内容,或者我应该尝试使用完全不同的方法?

1 个答案:

答案 0 :(得分:5)

使用任何控制网格将是超级的。绘制平铺网格的“正确”方法是绘制平铺网格。

您可以创建自己的控件,将图像或索引/键数组放入图像容器中并绘制它们。

从Control派生您的自定义控件,而不是UserControl(UserControl是一个控件容器,您不需要它,或者如果您想要滚动条,可以从ScrollableControl中取而代之)。重写OnPaint方法以执行绘图。使用传递给OnPaint的Graphics对象,它具有绘制文本,基元和位图的方法。

您可以通过覆盖MouseDown / Up来处理用户输入,或让消费者处理它但提供HitTest方法,以便将给定的X,Y转换为网格索引。

我在这里有一些代码C# Drawing circles in a panel用于绘制省略号以响应用户输入。从该代码中,您可以看到在控件上绘制某个状态的示例(在这种情况下,控件是表单,但您可以推断到自定义控件)。注意构造函数中的SetStyle调用以删除闪烁。另请注意,当您更改状态时,您不会尝试重绘,只需通知Invalidate,它告诉操作系统您需要重绘。

<强>更新

这是一个非常粗略的例子,可以帮助您入门: http://pastebin.com/DseuN56y