C# 如何连续旋转图像?

C# 如何连续旋转图像?,c#,winforms,C#,Winforms,我需要显示一个连续旋转的图像,直到窗体关闭。这意味着图像应该继续旋转。我正在用c#在windows应用程序中尝试此示例。我做了一个示例,说明标签中的文本按以下代码移动: label1.Location = new Point(label1.Location.X + 5, label1.Location.Y); 可能是标签中的文本必须旋转,而不是水平或垂直移动。尝试以下操作: <Storyboard x :Key="sbSpin"> <DoubleAnimation Sto

我需要显示一个连续旋转的图像,直到窗体关闭。这意味着图像应该继续旋转。我正在用c#在windows应用程序中尝试此示例。我做了一个示例,说明标签中的文本按以下代码移动:

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

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

尝试以下操作:

<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>

我最近写了一系列关于这个的博客:


试试这样的方法:

<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>

我最近写了一系列关于这个的博客:


试试这样的方法:

<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>

我最近写了一系列关于这个的博客:


试试这样的方法:

<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>

我最近写了一系列关于这个的博客:


您可以通过以下步骤完成:

  • 添加
    角度
    变量

  • 在窗体中添加“画布”控件,例如

  • 覆盖其事件

  • 获取其
    图形
    上下文并设置旋转。您可以使用提供
    角度
    变量值的方法

  • 使用label的方法将标签渲染到面板上

  • 修改
    角度
    并首先调用,然后在拥有正在绘制的画布的控件上调用(在本例中为
    面板

您的标签不应添加到设计器中


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

您可以通过以下步骤进行操作:

  • 添加
    角度
    变量

  • 在窗体中添加“画布”控件,例如

  • 覆盖其事件

  • 获取其
    图形
    上下文并设置旋转。您可以使用提供
    角度
    变量值的方法

  • 使用label的方法将标签渲染到面板上

  • 修改
    角度
    并首先调用,然后在拥有正在绘制的画布的控件上调用(在本例中为
    面板

您的标签不应添加到设计器中


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

您可以通过以下步骤进行操作:

  • 添加
    角度
    变量

  • 在窗体中添加“画布”控件,例如

  • 覆盖其事件

  • 获取其
    图形
    上下文并设置旋转。您可以使用提供
    角度
    变量值的方法

  • 使用label的方法将标签渲染到面板上

  • 修改
    角度
    并首先调用,然后在拥有正在绘制的画布的控件上调用(在本例中为
    面板

您的标签不应添加到设计器中


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

您可以通过以下步骤进行操作:

  • 添加
    角度
    变量

  • 在窗体中添加“画布”控件,例如

  • 覆盖其事件

  • 获取其
    图形
    上下文并设置旋转。您可以使用提供
    角度
    变量值的方法

  • 使用label的方法将标签渲染到面板上

  • 修改
    角度
    并首先调用,然后在拥有正在绘制的画布的控件上调用(在本例中为
    面板

您的标签不应添加到设计器中


您也可以在不使用标签控件的情况下使用它,因为一个简单的文本就足够了-您可以使用该方法。

有很多文章解释如何旋转。您需要进行更多的自定义,以便在加载表单时保持其旋转

只需输入源代码,然后在
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;
                }
            }
        }
private void Form1\u加载(对象发送方,事件参数e)
{
Thread t=新线程(KeepRotating);//启动一个新线程
t、 Start();
}
void KeepRotating()
{

对于(float i=1;i有很多文章解释了如何旋转。在加载表单时,您需要进行更多的自定义以保持其旋转

只需输入源代码,然后在
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;
                }
            }
        }
private void Form1\u加载(对象发送方,事件参数e)
{
Thread t=新线程(KeepRotating);//启动一个新线程
t、 Start();
}
void KeepRotating()
{

对于(float i=1;i有很多文章解释了如何旋转。在加载表单时,您需要进行更多的自定义以保持其旋转

只需输入源代码,然后在
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;
                }
            }
        }
private void Form1\u加载(对象发送方,事件参数e)
{
Thread t=新线程(KeepRotating);//启动一个新线程
t、 Start();
}
void KeepRotating()
{

对于(float i=1;i有很多文章解释了如何旋转。在加载表单时,您需要进行更多的自定义以保持其旋转

只需输入源代码,然后在
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;
                }
            }
        }
private void Form1\u加载(对象发送方,事件参数e)
{
螺纹t=新螺纹(KeepR