问题 渲染问题

DCHVirtual

新成员
已加入
2015年10月23日
留言内容
2
编程经验
10+
我正在关注某人的youtube指导视频,以了解如何获得2D游戏设置的框架,但我不知道自己做错了什么,但是在他的视频中,图像不闪烁,并且在我的游戏中,精灵会闪烁进出存在。

这是我用来实现的代码:

C#:
private void render()        {
            Bitmap frame = new Bitmap(1200, 700);
            Graphics frameGFX = Graphics.FromImage(frame);


            while (true)
            {
                Bitmap Spherecraft = Forcewave2.Properties.Resources.Spherecraft;
                frameGFX.DrawImage(Spherecraft, 100, 100);
                drawHandle.FillRectangle(new SolidBrush(Color.Black), 0, 0, 1200, 700);
                drawHandle.DrawImage(frame, 0, 0);
            }
        }

知道我在做什么错吗?

谢谢!
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,523
地点
悉尼,澳大利亚
编程经验
10+
那真的是他们提供的代码吗?我在那里看到了许多问题,有些比其他的更糟。

首先,返回到Properties的形式很糟糕,需要多次资源化,因为每次都会创建一个新对象。您只能将资源提取到一个对象一次,然后重复使用该对象。

其次,您正在每次在循环内创建具有相同属性的SolidBrush,而没有对其进行处置。如果要创建一次性对象,请确保在使用完后将其丢弃。如果要每次在循环内使用具有相同属性的对象,则只需在循环外创建一次该对象,然后在循环内重复使用该实例。无论如何,您无需以这种方式创建SolidBrush。 Brushes类具有Black属性,该属性返回为Black的SolidBrush,不需要您处理它。

至于游戏循环,这不是我做过的事情,所以我不确定其中涉及什么。该方法是否在辅助线程上执行?您要使用哪种控件?
 
最佳 底部