Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#中带有默认系统的简单图形。绘图_C#_System.drawing - Fatal编程技术网

C#中带有默认系统的简单图形。绘图

C#中带有默认系统的简单图形。绘图,c#,system.drawing,C#,System.drawing,我想在C#中开发一个简单的点击游戏,带有默认的绘图库……这个项目没有openGL/SDL/Tao 我只想说,我很好奇在表单上绘制分层可点击图像的最佳方法 理想情况下,我会 1) 环境层(通道、门等) 2) 对象层(项目) 3) 角色层(敌人) 理想情况下,其他层下的层仍然是可见的,因此我仍然可以看到对象下的环境(因此,我用于将对象绘制到窗体的任何组件都需要是透明的) 这个游戏将是基于瓷砖的…所以我将生成某种组件的2D数组,并将它们放到表单上。问题是,我应该使用什么组件?一位朋友建议生成面板并将其

我想在C#中开发一个简单的点击游戏,带有默认的绘图库……这个项目没有openGL/SDL/Tao

我只想说,我很好奇在表单上绘制分层可点击图像的最佳方法

理想情况下,我会

1) 环境层(通道、门等)

2) 对象层(项目)

3) 角色层(敌人)

理想情况下,其他层下的层仍然是可见的,因此我仍然可以看到对象下的环境(因此,我用于将对象绘制到窗体的任何组件都需要是透明的)

这个游戏将是基于瓷砖的…所以我将生成某种组件的2D数组,并将它们放到表单上。问题是,我应该使用什么组件?一位朋友建议生成面板并将其放到表单上,然后使用背景图像属性,但是有更好的方法吗


我知道这不是开发的理想方式……这更像是我自己的原型。稍后,如果我有进展的话,我可能会将它转移到Tao,但现在(即,明年左右),我希望它非常简单。

平铺只是用来组织UI的逻辑块。使用“瓷砖”概念时,不一定需要面板形式的瓷砖。切换平铺可以简单地表示角色已到达平铺A的右边缘,因此您将绘制平铺B并将角色放置在该平铺的左边缘。因此,您的内存结构应该是一个逻辑平铺对象的2D数组,其中包含有关绘制内容的信息,但不一定包含面板,尽管这是一个选项,但我不建议这样做

层:你真的不需要担心层。您所要做的就是按照正确的顺序绘制:首先是环境,然后是对象,然后是字符。Net和可能所有的框架都是前后绘制的,这意味着首先绘制的对象可能会被后来绘制的对象完全或部分遮挡。“分层”自动发生。如果只在对象自身的边界内绘制对象,则不需要担心透明度。例如,在20x20像素范围内绘制20x20像素字符

当然,这都是假设在Paint事件处理程序中调用了raw e.Graphics.Draw*和e.Graphics.Fill*。与软件中的任何东西一样,有101种方法