【问题标题】:Making 2d tile editor with picturebox or similar control使用图片框或类似控件制作 2d 平铺编辑器
【发布时间】:2012-04-10 16:19:07
【问题描述】:

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

之前我尝试使用 DataGridView,但结果超级慢。

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

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

【问题讨论】:

  • 还有一篇有用的帖子关于将图像转换为地图link

标签: c# bitmap picturebox


【解决方案1】:

使用任何控件网格都会非常慢。绘制瓷砖网格的“正确”方法是……绘制瓷砖网格。

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

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

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

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

更新

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

【讨论】:

  • 我添加了一个指向我制作的示例的链接。
  • 太棒了!谢谢,这看起来和我想象的一样。
猜你喜欢
  • 2016-12-13
  • 1970-01-01
  • 1970-01-01
  • 2014-09-05
  • 1970-01-01
  • 2012-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多