Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在windows phone 8中连续旋转?_C#_Windows Phone 7_Rotation_Rotateanimation - Fatal编程技术网

C# 如何在windows phone 8中连续旋转?

C# 如何在windows phone 8中连续旋转?,c#,windows-phone-7,rotation,rotateanimation,C#,Windows Phone 7,Rotation,Rotateanimation,我使用这个代码进行旋转 void rotate() { Duration Time_duration = new Duration(TimeSpan.FromSeconds(20)); Storyboard MyStory = new Storyboard(); MyStory.Duration = Time_duration; DoubleAnimation My_Double = new DoubleAnimation(); My_Double.Dur

我使用这个代码进行旋转

void rotate()
{
    Duration Time_duration = new Duration(TimeSpan.FromSeconds(20));
    Storyboard MyStory = new Storyboard();
    MyStory.Duration = Time_duration;
    DoubleAnimation My_Double = new DoubleAnimation();
    My_Double.Duration = Time_duration;
    MyStory.Chil*emphasized text*dren.Add(My_Double);
    RotateTransform MyTransform = new RotateTransform();
    Storyboard.SetTarget(My_Double, MyTransform);
    Storyboard.SetTargetProperty(My_Double, new PropertyPath("Angle"));
    My_Double.To = 270;
    this.maincan.RenderTransform = MyTransform;
    this.maincan.RenderTransformOrigin = new Point(0.5, 0.5);
    //stackPanel1.Children.Add(image1);
    MyStory.Begin();
}

这是可行的,但我想连续旋转图像。

这只是一个想法,但如果您唯一关心的是使图像连续旋转,这可能是最简单的方法

        void rotate()
        {
            DispatcherTimer dispatcherTimer = new DispatcherTimer();
            dispatcherTimer.Tick += dispatcherTimer_Tick;
            dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
            dispatcherTimer.Start();
        }
所以每一秒事件都会被触发

 private void dispatcherTimer_Tick(object sender, EventArgs e)
    {
        Storyboard MyStory = new Storyboard();
        MyStory.Duration = new TimeSpan(0, 0, 1);
        DoubleAnimation My_Double = new DoubleAnimation();
        My_Double.Duration = new TimeSpan(0, 0, 1);
        MyStory.Children.Add(My_Double);
        RotateTransform MyTransform = new RotateTransform();
        Storyboard.SetTarget(My_Double, MyTransform);
        Storyboard.SetTargetProperty(My_Double, new PropertyPath("Angle"));
        My_Double.To = 360;
        YourImage.RenderTransform = MyTransform;
        YourImage.RenderTransformOrigin = new Point(0.5, 0.5);       
        MyStory.Begin();
    }
让我知道进展如何(:

编辑

这只是一个想法,我相信有更好的方法

 void rotate(int i)
       {            
        Storyboard MyStory = new Storyboard();
        MyStory.Duration = new TimeSpan(0,0,1);           
        DoubleAnimation My_Double = new DoubleAnimation();
        My_Double.Duration =  new TimeSpan(0,0,1);          
        MyStory.Children.Add(My_Double);
        RotateTransform MyTransform = new RotateTransform();
        Storyboard.SetTarget(My_Double, MyTransform);
        Storyboard.SetTargetProperty(My_Double, new PropertyPath("Angle"));
        My_Double.From = i;
        My_Double.To = i +90;
        m_Image.RenderTransform = MyTransform;
        m_Image.RenderTransformOrigin = new Point(0.5, 0.5);            
        MyStory.Begin();
        MyStory.Completed +=((arg,c) =>
        {
            if (i == 360)
            {
                rotate(0);
            }
            else 
            {
                rotate(i + 90);
            }        
        });                                
    }

Storyboard
有一个名为
RepeatBehavior
的属性,可用于控制动画的重复方式。在代码中,添加以下行

MyStory.RepeatBehavior = RepeatBehavior.Forever;  // repeat forever 

官方文件中有更多的例子:


谢谢你,朋友。它工作正常……但我想从最后一个角度旋转图像,不要重复……请帮助我……确保开始角度和结束角度相同,即,将形状/图像旋转360度,然后重复。谢谢你,朋友……工作正常……但我想从最后一个角度旋转图像……这很好一次点击旋转,拍摄角度为90度,另一次点击旋转,从90度开始旋转,然后旋转我给出的角度…请帮帮我,现在请看我的答案Hai rado…我有另一个问题…第一次我将图像旋转90度…我想点击旋转后,旋转我同时再画一个90度。你有属性
试试这个,这样你就可以很容易地改变角度,例如
My_Double.from=p;My_Double.to=q;
如果(p==360){rotate(0,90)}或者{rotate(p+180,q+180)}
每次跳过90度时都这样做
MyStory.RepeatBehavior = new RepeatBehavior(TimeSpan.FromSeconds(20)); // repeat for 20 seconds