我用我的paint方法绘制图像,使用的是e.Graphics.DrawImage(myImage);
。e是paint事件参数。如果bool为真,我想显示一个动画,否则我想绘制一些其他的图像。
在paint事件方法中,我有类似于以下内容的代码:
if(myBool)
{
e.Graphics.DrawImage(nextFrame);
}
else
{
e.Graphics.DrawImage(backgroundImage);
}
backgroundImage
是我的背景图片,而不是我可以用实际的Form1
background属性替换的普通颜色。nextFrame
是一个图像,它被设置为我想通过计时器播放的动画的下一帧。当我运行我的程序时,有明显的滞后,我认为这是因为每当调用paint方法时,我总是使用if语句。
如果有一种方法可以在另一种方法中使用e.Graphics.DrawImage();
,那么我会使用它,这样if语句就更少了,或者有没有一种方法可以简化我的paint方法,使其不那么滞后。
注意:动画和背景图像覆盖了整个屏幕,分辨率为2256x1504,这意味着它们也可能导致延迟,在这种情况下,我需要找到一种方法来提高e.Graphics.DrawImage();
的速度
1条答案
按热度按时间zhte4eai1#
您的问题是,是否有另一种方法可以使用
Graphics.DrawImage
快速绘制整个屏幕以用作动画。一种“其他方法”是通过检测对
myBool
属性的更改并修改主窗体的BackgroundImage
属性以响应此更改来间接调用它。如果myBool
为true,则动画由迭代背景图像数组组成。当我测试这种方法时,它看起来非常快,但是您可能需要实际运行clone我的示例,看看它对于您的应用程序是否足够快。