Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.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#_Graphics_Visual Studio 2013_Picturebox_Breakout - Fatal编程技术网

C# 单个图片框中的多个局部剖切对象

C# 单个图片框中的多个局部剖切对象,c#,graphics,visual-studio-2013,picturebox,breakout,C#,Graphics,Visual Studio 2013,Picturebox,Breakout,我正在创建一个程序,用C语言模拟突破游戏 我一直在学习如何为游戏创建砖块、桨和球的各种技术,但无法解决如何在VisualStudio中将它们全部添加到一个图片框中的问题 我面临的主要问题是,例如,为了移动球,我必须使用以下代码部分清除“画布”: 纸。透明色。白色;这基本上将图片框清除为白色,以便球的新坐标在图片框内,这就是我的问题开始的地方 我练习过的突破游戏中的每个组件都使用paper.ClearColor.White;密码这意味着,例如,如果我想同时移动拨片、显示砖块和弹起球,程序只决定一次

我正在创建一个程序,用C语言模拟突破游戏

我一直在学习如何为游戏创建砖块、桨和球的各种技术,但无法解决如何在VisualStudio中将它们全部添加到一个图片框中的问题

我面临的主要问题是,例如,为了移动球,我必须使用以下代码部分清除“画布”: 纸。透明色。白色;这基本上将图片框清除为白色,以便球的新坐标在图片框内,这就是我的问题开始的地方

我练习过的突破游戏中的每个组件都使用paper.ClearColor.White;密码这意味着,例如,如果我想同时移动拨片、显示砖块和弹起球,程序只决定一次执行一个功能。如果我去掉paper.ClearColor.White;从我的一项资产来看,程序将无法按我希望的方式运行


有没有一种方法可以让所有这些组件在游戏中同时运行,而不会完全丢失它们中的任何一个

最简单的情况是,您需要改变方法,让“布局”或“绘制”集中控制,可能是通过计时器或类似工具,然后执行单个“清除”操作,然后重新绘制所有组件。换句话说,不要让每个组件都清除画布,它们应该只关注自己的渲染


以上是最简单的方法。除此之外,您可以采取一种方法,只重新绘制从一个帧到另一个帧的变化。这可以实现更优化的性能,尤其是当游戏画布很大或有许多组件时。然而,它需要一个完全不同的,在某些方面更复杂的设计。您需要确定在前一帧中对其进行了“移动”或其他修改的矩形/矩形,仅清除这些矩形,并要求完全或部分位于这些矩形中的组件重新绘制它们自己。

感谢您的回复!在计时器中执行单个清除比为每个组件执行清除更有意义。我会试试看,看我的进展如何。