Как изменить ось и цвет проекции Y объекта с помощью C #, а не XAML - PullRequest
0 голосов
/ 18 августа 2011

Я работаю над проектом Silverlight, где я буду «переворачивать» прямоугольники, поворачивая их по оси Y-проекции.Я также поменяю цвет в середине анимации, чтобы он выглядел так, как если бы задняя сторона прямоугольника была другого цвета.Я могу сделать это в XAML без проблем, однако мне нужно сделать это с помощью кода, потому что я хочу динамически переворачивать разные прямоугольники.Я не хочу создавать анимацию для каждого прямоугольника на сетке.Вот как выглядит мой XAML:

<Storyboard x:Name="Flip1">
            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Projection).(PlaneProjection.RotationY)" Storyboard.TargetName="rectangle">
                <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
                <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="-90"/>
                <EasingDoubleKeyFrame KeyTime="0:0:0.6" Value="-90"/>
                <EasingDoubleKeyFrame KeyTime="0:0:1" Value="0"/>
            </DoubleAnimationUsingKeyFrames>
            <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)" Storyboard.TargetName="rectangle">
                <EasingColorKeyFrame KeyTime="0:0:0.5" Value="Blue"/>
                <EasingColorKeyFrame KeyTime="0:0:0.6" Value="Red"/>
            </ColorAnimationUsingKeyFrames>
        </Storyboard>

Я создавал раскадровки из кода несколько раз, однако этот оставляет меня немного озадаченным EasingDoubleKeyFrames.Есть идеи, как это сделать?

1 Ответ

1 голос
/ 18 августа 2011

Это должен быть перевод первой анимации:

var anim = new DoubleAnimationUsingKeyFrames();
anim.KeyFrames.Add(new EasingDoubleKeyFrame() { KeyTime = TimeSpan.FromSeconds(0), Value = 0 });
anim.KeyFrames.Add(new EasingDoubleKeyFrame() { KeyTime = TimeSpan.FromSeconds(0.5), Value = -90 });
anim.KeyFrames.Add(new EasingDoubleKeyFrame() { KeyTime = TimeSpan.FromSeconds(0.6), Value = -90 });
anim.KeyFrames.Add(new EasingDoubleKeyFrame() { KeyTime = TimeSpan.FromSeconds(1), Value = 0 });
Storyboard.SetTarget(anim, rectangle);
Storyboard.SetTargetProperty(anim, new PropertyPath("Projection.RotationY"));

При использовании Storyboards вам также необходимо зарегистрировать цель в именной области, я рекомендую прочитать полное описание класса Storyboard.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...