我试图在Windows窗体应用程序上创建一个动画位图。一个计时器对象被设置为100ms的间隔,并且代码的工作原理是这样的:运行几帧后,位图动画停止工作
我有一个2560x2560位图,它是我的地图,名为'pb'的图片框包含此地图,图片框的大小为800x800与图像拉伸参数,以提供更好的分辨率。我有一个包含火炬帧的7个元素的位图数组。这个想法是,我将当前火炬位图绘制到地图上,将'pb'图像设置为地图并调用无效过程来重绘它。然后,将绘制到其上的火炬的位图恢复为原始地图位图'org_btm'。
的代码如下:
private void animationtick_Tick(object sender, EventArgs e)
{
using (Graphics g = Graphics.FromImage(btm))
{ g.DrawImage(torch_anim[torch_anim_c], new Point(20*64, 20*64)); }
pb.Image = btm;
pb.Invalidate();
btm = org_btm;
if (torch_anim_c < 6)
{
torch_anim_c++;
}
else
{
torch_anim_c = 0;
}
pb.Invalidate();
}
'torch_anim_c' 是位图阵列的索引计数器。 所以发生的问题是,火炬工作的第一个几帧,并停止工作后,被困在1帧,当我运行代码调试器中断点时,它表明代码运行,即使当图像卡住了,程序响应其他功能仍在工作。 你有什么想法如何解决这个问题? 预先感谢您。
我有被卡住的火炬动画地图的一个片段: Torch Stuck Snippet
编辑:在“点()”是20 * 64,因为火炬的尺寸为64×64,它是在20位和地图40 * 40瓦。
在'pb.Invalidate();'之前,检查'pb.InvokeRequired'是否为'true'。 –
问题仍然存在,因为它是:( – Deivis
其实,我删除了代码行,我做了'torch_anim [i] .maketransparent(Color.FromArgb(255,255,255,255));'这似乎解决了卡住的问题,我不知道没有任何线索为什么,但是我仍然需要使动画透明 – Deivis