我正在制作一个带方形拼贴的2D游戏,是时候制作一个好的地图编辑器了。
之前我曾尝试使用DataGridView,但事实证明它是超级的。
我发现应该有另一种方法来绘制图块(实际图像或彩色背景)及其参数(在文本中)。图片框!
是否有一种简单的方法可以访问像素数组,在所需坐标处插入平铺图像,获取指针坐标和所有内容,或者我应该尝试使用完全不同的方法?
答案 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