如何在C#中为图像添加动画效果

3
我正在尝试在C#中对图像进行动画处理。基本上,我想将一个图像与另一个函数连接起来,并根据1到10的比例使图像向上或向下移动。默认情况下,图像将从1开始。我已经搜索过了,找到了让形状在屏幕上上下移动的方法,但没有实际图像的方法。该图像很小,例如60x60像素。我觉得这应该很简单,但我还没有弄清楚。我想只需要将一个图像放置在Windows表单上,然后在表单的y轴上将其向上或向下移动,但我希望它能平滑地移动。

好的,我已经成功将按钮与计时器函数连接起来,并使按钮在屏幕上平滑地上下移动。该按钮必须在程序运行期间保持移动状态。但是,我很难编写一个停止计时器和图像(按钮)移动的函数,一旦图像达到某个位置。如果没有这个函数,计时器就会继续工作,图像(按钮)也会移出屏幕。我尝试更改button.Location.Y函数,但我还没有弄好。有谁能给予建议吗?谢谢。哦,是的,一旦图像(按钮)到达192或447的Y位置,它应该停止移动。

我所拥有的一个示例:

    private void timer2_Tick(object sender, EventArgs e)
    {
        button2.Top = button2.Top + 1;
        if (button2.Location.Y == button2.Location.Y - 192)
        {
            timer2.Stop();
            timer3.Stop();
        }
        //if (timer_limit < 100)
        //{
        //    button2.Top = button2.Top + 1;
        //    timer_limit++; 
        //}
        //else
        //{
        //    timer2.Stop();
        //}
    }

1
这是WinForms吗?WPF?XNA?Silverlight? - Nate
你不会想要使用WinForms,因为它无法很好地处理控件的移动。在这里应该选择WPF。 - Jeff Mercado
1
Nate,不是以上任何一个。有人建议我使用计时器来移动窗体上的对象。 - Eurasianman
1个回答

2

有几种方法可以实现这一点。您可以只使用PictureBox并更改其Location属性。或者您可以在窗体的OnPaint()覆盖中绘制图像,并更改参数为e.Graphics.DrawImage()。然后,您将不得不调用Invalidate()来强制运行OnPaint方法。这是最便宜的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接