sel*_*vam 5 c# rotation windows-phone-7 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.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();
}
Run Code Online (Sandbox Code Playgroud)
它工作,但我想连续旋转图像.
该Storyboard有一个名为属性RepeatBehavior,它允许您控制动画的重复.在您的代码中,添加以下行...
MyStory.RepeatBehavior = RepeatBehavior.Forever; // repeat forever
Run Code Online (Sandbox Code Playgroud)
要么
MyStory.RepeatBehavior = new RepeatBehavior(TimeSpan.FromSeconds(20)); // repeat for 20 seconds
Run Code Online (Sandbox Code Playgroud)
官方文档中有更多示例:
这只是一个想法,但如果您唯一关心的是使图像连续旋转,这可能是最简单的方法。
void rotate()
{
DispatcherTimer dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += dispatcherTimer_Tick;
dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
dispatcherTimer.Start();
}
Run Code Online (Sandbox Code Playgroud)
所以每秒都会触发该事件
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();
}
Run Code Online (Sandbox Code Playgroud)
让我知道事情的后续 (:
编辑
这只是一个想法我相信有更好的方法
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);
}
});
}
Run Code Online (Sandbox Code Playgroud)