如何解决OnPaint事件运行缓慢,会引发“阴影”
我目前正在尝试通过OnPaint事件在WinForms上绘制一些精灵。我以前使用过一个PictureBox,它可以工作,但是因为我无法处理多个PictureBox的重叠,所以我切换到OnPaint事件。我环顾互联网,但找不到解决问题的答案。
我拥有的所有精灵都是项目中的嵌入式资源。我将它们放在“图像”类型的列表中,并在按下某个按钮(KeyEvent)时在它们上循环。
我有一个Timer_Tick事件,如下所示:
private void Timer_Tick(object sender,EventArgs e)
{
Invalidate();
}
我的OnPaint方法是这样的:
protected override void OnPaint(PaintEventArgs e)
{
DoubleBuffered = true;
if (SPRITE_POS == 0)
DrawSprite(spriteList[SPRITE_POS]);
if (SPRITE_POS != spriteList.Count - 1)
SPRITE_POS++;
}
和DrawSprite方法:
private void DrawSprite(Image img)
{
Bitmap bitmap = new Bitmap(img);
bitmap.SetResolution(60,60);
PEA.Graphics.DrawImage(bitmap,P1_X,P1_Y);
}
由于某种原因,我得到快速按键的结果(与来自MK的Sub-Zero的图像进行了尝试)
没有双重缓冲,它会闪烁。使用双缓冲,我在上面得到了这个结果。它会抛出“阴影”。是否可以轻松避免这种情况?当新的精灵已经绘制在表单上时,最后的精灵仍会显示一会儿。
非常感谢您!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。