使用图片框或类似控件制作 2d 平铺编辑器
本文关键字:2d 编辑器 控件 | 更新日期: 2023-09-27 18:30:43
我正在制作一个带有方形瓷砖的 2D 游戏,是时候制作一个好的地图编辑器了。
早些时候,我尝试使用DataGridView,但结果是超慢的。
我想应该有另一种方法来绘制瓷砖(实际图像或彩色背景)及其参数(文本)。图片盒!
有没有一种简单的方法来访问 2d 像素数组、在所需坐标处插入平铺图像、获取指针坐标和所有这些东西,或者我应该尝试使用完全不同的方法?
使用任何控件网格都会非常慢。绘制瓷砖网格的"正确"方法是。以绘制图块网格。
您可以创建自己的控件,该控件将图像或索引/键数组放入图像容器中并绘制它们。
从控件派生自定义控件,而不是用户控件(用户控件是一个控件容器,您不需要它,或者如果需要滚动条,也可以从 ScrollableControl 派生)。重写 OnPaint 方法以执行绘图。使用传递给 OnPaint 的图形对象,它具有用于绘制文本、基元和位图的方法。
您可以通过重写 MouseDown/Up 来处理用户输入,或者让使用者处理它,但提供 HitTest 方法,以便可以将给定的 X、Y 转换为网格索引。
我这里有一些代码 C# 在面板中绘制圆圈,用于绘制椭圆以响应用户输入。从该代码中,您可以看到在控件上绘制某些状态的示例(在这种情况下,控件是窗体,但您可以推断到自定义控件)。请注意构造函数中用于删除闪烁的 SetStyle 调用。另请注意,当您更改状态时,您不会尝试重绘,而只是 Invalid,这会告诉操作系统您需要重绘。
更新
这里有一个非常粗略的例子来帮助你入门:http://pastebin.com/DseuN56y