Silverlight 循环代码隐藏中的动画,使用RenderTransform
有没有可能用codebehind而不是xaml来制作“老派”动画 我只想要一个箭头,指向具有“反弹效果”的东西,我可以在我自己的for循环中轻松实现。但我不知道如何刷新或做一个定时器延迟,在循环内。我已经在codebehind中将图像放置到位。我想做的就是这个简单的动画Silverlight 循环代码隐藏中的动画,使用RenderTransform,silverlight,Silverlight,有没有可能用codebehind而不是xaml来制作“老派”动画 我只想要一个箭头,指向具有“反弹效果”的东西,我可以在我自己的for循环中轻松实现。但我不知道如何刷新或做一个定时器延迟,在循环内。我已经在codebehind中将图像放置到位。我想做的就是这个简单的动画 public void validationArrow() { var validationArrow = new Image(); validationArrow.Source = new BitmapIma
public void validationArrow()
{
var validationArrow = new Image();
validationArrow.Source = new BitmapImage(new Uri("/SlProject;component/arrow.png", UriKind.RelativeOrAbsolute));
LayoutRoot.Children.Add(validationArrow);
validationArrow.Stretch = Stretch.None;
validationArrow.VerticalAlignment = System.Windows.VerticalAlignment.Top;
validationArrow.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
var arrowPosition = new TranslateTransform { X = 0, Y = 0 };
validationArrow.RenderTransform = arrowPosition;
validationArrow.Name = "validationArrow";
for (int i = 150; i >= 0; i--)
{
arrowPosition.X = i;
validationArrow.RenderTransform = arrowPosition;
// how can I refresh screen and do some timing here?
}
}
没有一所学校比得上那所旧学校;) 这里,这应该能帮你上路。您可以使用传递给BuildEasing方法的毫秒和Y平移值来更改“反弹”效果的速度和距离
private void RunStoryboard()
{
var arrowImage = new Image();
arrowImage.RenderTransform = new CompositeTransform();
arrowImage.Source = new BitmapImage(new Uri("/SlProject;component/arrow.png", UriKind.RelativeOrAbsolute));
LayoutRoot.Children.Add(arrowImage);
Storyboard storyboard = new Storyboard();
storyboard.Children.Add(BuildKeyFrame(arrowImage));
storyboard.Begin();
}
private DoubleAnimationUsingKeyFrames BuildKeyFrame(Image target)
{
DoubleAnimationUsingKeyFrames kf = new DoubleAnimationUsingKeyFrames();
Storyboard.SetTarget(kf, target);
Storyboard.SetTargetProperty(kf, new PropertyPath("(UIElement.RenderTransform).(CompositeTransform.TranslateY)"));
kf.KeyFrames.Add(BuildEasing(100, 10));
kf.KeyFrames.Add(BuildEasing(200, 0));
kf.KeyFrames.Add(BuildEasing(300, 10));
kf.KeyFrames.Add(BuildEasing(400, 0));
kf.KeyFrames.Add(BuildEasing(500, 10));
kf.KeyFrames.Add(BuildEasing(600, 0));
return kf;
}
private EasingDoubleKeyFrame BuildEasing(int ms, int value)
{
return new EasingDoubleKeyFrame()
{
KeyTime = KeyTime.FromTimeSpan(new TimeSpan(0, 0, 0, 0, ms)),
Value = value
};
}
不客气@Dave,如果您还有其他问题,请不要犹豫。实际上,我想知道是否有一种快速的方法可以让箭头图像消失?动画后一秒,或动画开始前清除(如果存在)前一个图像……当然,您所要做的就是将新的Double AnimationUsing Keyframes添加到故事板的子集合中,目标是图像的可见性,而不是Y变换。你们有混合表达吗?我通常做的是在Blend中创建故事板,然后在编写代码时使用它作为指导。谢谢。不幸的是,我只是使用VS Express和MVC来创建我的网站,所以我在几个小时后才能尝试,但这肯定会帮助我解决这个问题。