问题描述
我目前正在尝试通过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 (将#修改为@)