C# 在单独的图片框中为编辑器显示2d游戏的分幅是一个好主意吗?

C# 在单独的图片框中为编辑器显示2d游戏的分幅是一个好主意吗?,c#,map,2d,tiles,C#,Map,2d,Tiles,所以我正在为这个叫做“大灾变”的小游戏构建一个地图编辑器。撇开编码不谈(因为这不是真正的问题),为每个磁贴使用picturebox是一个好主意吗? 你有什么其他的想法可以让我和我的电脑上的事情变得更容易一些吗?(使用visual studio,在移动或处理地图文件12x12象限的所有144个图片盒时,速度明显减慢) 我的另一个想法是将图片组装成一张地图,然后将其放入一个图片盒中,但我如何以这种方式编辑单个瓷砖?在其上放置光栅,并在单击鼠标时检查鼠标位于哪个磁贴上 谢谢你的建议 编辑: 这是一个编

所以我正在为这个叫做“大灾变”的小游戏构建一个地图编辑器。撇开编码不谈(因为这不是真正的问题),为每个磁贴使用picturebox是一个好主意吗?

你有什么其他的想法可以让我和我的电脑上的事情变得更容易一些吗?(使用visual studio,在移动或处理地图文件12x12象限的所有144个图片盒时,速度明显减慢)

我的另一个想法是将图片组装成一张地图,然后将其放入一个图片盒中,但我如何以这种方式编辑单个瓷砖?在其上放置光栅,并在单击鼠标时检查鼠标位于哪个磁贴上

谢谢你的建议

编辑:
这是一个编辑-不是一个单独的游戏

不,如果可以的话,我认为最好不要使用单独的图片框控件。这些控件中的每一个都会消耗资源,过多的控件会降低应用程序的速度

每个进程有10000个窗口句柄的限制。在这一点上,你远远没有达到或超过这个极限。但是如果你决定在以后的游戏中把地图(明显)放大,会怎么样?此外,这不是一个好的设计来任何地方接近极限。还有一个32k的系统范围限制,因此一个应用程序消耗的句柄越多(最高可达10k限制),其他应用程序可用的句柄就越少


只需将窗体的客户端区域用作绘图面(您根本不需要任何图片框)。编写代码将其分成适当的部分,然后在每个部分中绘制图像。处理窗体的鼠标单击事件,进行点击测试以查看用户单击的位置,并将其与您的某个片段匹配。

我使用的2D等轴测游戏使用单个picturebox。我所做的是将鼠标的X和Y位置除以瓷砖的高度和宽度。将该数字转换为整数(丢弃十进制值)。这应该给你确切的瓷砖。但如果不在picturebox上使用鼠标位置,则可能需要稍微使用一下公式。因此,在鼠标单击事件中,您将获得用户单击的平铺,并在该位置绘制一个新的平铺图像

如果你想用C制作游戏,为什么不使用XNA呢?这是一个非常好的框架,你可以得到很多关于它的教程


是设计师放慢了速度,还是应用程序本身放慢了速度?您使用的是哪种框架?Winforms?WPF?XAML?可能不是最好的主意。显然,有很多方法可以做到这一点,但是如果你用图片框来处理它,你就要把它保持下去,直到你觉得游戏中没有其他东西更重要。(由于不清楚您的经验和时间,因此也不可能提出任何“对您更方便”的建议)我使用Winforms来实现这一点。设计师是减慢速度的东西,当应用程序处于调试模式时,表现良好。这不是我的游戏。我只是在编辑地图和保存文件,所以我不担心它会变大。但是,谢谢,我根本没有想过实际使用表单本身!把这也写在这里,我不是在做游戏,我是在做编辑。不过我会调查XNA的!