如何连续旋转图像?

时间:2013-12-24 09:34:03

标签: c# winforms

我需要显示一个连续旋转的图像,直到该表格关闭。这意味着图像应该继续旋转。我正在使用c#在Windows应用程序中尝试此示例。我做了一个例子,标签中的文字正在通过以下代码移动:

label1.Location = new Point(label1.Location.X + 5, label1.Location.Y);

标签中的文字可能必须旋转,而不是像水平或垂直移动一样。

3 个答案:

答案 0 :(得分:2)

您可以按照以下步骤执行此操作:

  • 添加angle变量

  • 在表单中添加“画布”控件,例如一个Panel

  • 覆盖其Paint事件

  • 获取其Graphics上下文并设置轮换transform。您可以使用Rotation方法提供angle变量的值。

  • 使用标签的DrawToBitmap方法将标签呈现在面板上

  • 修改angle并首先调用Invalidate,然后调用Update控件上拥有您正在绘制的画布(在此示例中为Panel })

不应在设计师中添加您的标签。

您也可以在没有标签控件的情况下使用它,只需一个简单的文本即可 - 您可以使用DrawString方法。

答案 1 :(得分:1)

尝试这样的事情:

<Storyboard x :Key="sbSpin">
<DoubleAnimation
  Storyboard.TargetName="Spin"
  Storyboard.TargetProperty="(Button.RenderTransform).(RotateTransform.Angle)"
  From="0"
  To="360"
  RepeatBehavior="Forever"
  Duration="0:0:3" Completed ="DoubleAnimation_Completed" />
</Storyboard>

我最近写了一系列博客文章:

http://pmichaelsdev.wordpress.com/2013/11/18/animation-in-xaml-part-3/

答案 2 :(得分:0)

有很多文章解释了如何轮换Image。在表单加载时,您需要进行一些自定义以使其保持旋转状态。

只需download源代码,然后在Form1中添加以下代码。启动一个新线程并调用一个不断旋转图像的函数。

       private void Form1_Load(object sender, EventArgs e)
        {
            Thread t = new Thread(KeepRotating);   // Kick off a new thread
            t.Start();
        }

       void KeepRotating()
        {
            for (float i = 1; i <= 360; i++)
            {
                RotateImage(pictureBox1, image, i);
                Thread.Sleep(20);  // for slower rotation, Avoid if not needed
                if (i == 360f)
                {
                    i = 1f;
                }
            }
        }

输出看起来像这样。

enter image description here

P.S。这是完成任务的一种非常简单和原始的方法。确保处理异常处理和内存泄漏。