我正在制作一款带有方形图 block 的 2D 游戏,是时候制作一个优秀的 map 编辑器了。
之前我尝试过使用 DataGridView,但结果 super 慢。
我发现应该有另一种方法来绘制图 block (实际图像或彩色背景)及其参数(以文本形式)。图片框!
是否有一种简单的方法来访问二维像素数组,在所需的坐标处插入平铺图像,获取指针坐标以及所有这些内容,或者我应该尝试使用完全不同的方法?
最佳答案
使用任何控件网格都会非常慢。绘制瓷砖网格的“正确”方法是..绘制瓷砖网格。
您可以创建自己的控件,将图像数组或索引/键放入图像容器中并绘制它们。
从 Control 派生自定义控件,而不是 UserControl(UserControl 是一个控件容器,您不需要它,或者如果您需要滚动条,则可以从 ScrollableControl 派生)。重写 OnPaint 方法来执行绘图。使用传递给 OnPaint 的 Graphics 对象,它具有绘制文本、图元和位图的方法。
您可以通过重写 MouseDown/Up 来处理用户输入,或者让使用者处理它,但提供 HitTest 方法,以便可以将给定的 X、Y 转换为网格索引。
我这里有一些代码 C# Drawing circles in a panel用于响应用户输入绘制椭圆。从该代码中,您可以看到在控件上绘制某些状态的示例(这种情况下的控件是表单,但您可以推断到自定义控件)。请注意构造函数中用于消除闪烁的 SetStyle 调用。另请注意,当您更改状态时,您不会尝试重绘,您只是无效,这会告诉操作系统您需要重绘。
已更新
这是一个非常粗略的示例来帮助您入门: http://pastebin.com/DseuN56y
关于c# - 使用 picturebox 或类似控件制作 2d 平铺编辑器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10092521/