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