XAML .net文本块动画轮换

时间:2018-01-19 16:35:08

标签: .net wpf xaml animation rotation

基本运行。

我有一个Windows窗体,它使用元素宿主对象在子XAML视图之间切换。我正在使用FontAwesome微调器图标旋转并指示活动正在发生。我已经缩小了我要么不能设置正确的属性路径,要么在尝试修改角度时需要额外的东西。

有问题的对象:

<TextBlock x:Name="status_1" HorizontalAlignment="Right" Margin="288,95,0,0" TextWrapping="Wrap" Text="&#xf110;" VerticalAlignment="Top" FontFamily="/InstallerPanes;component/App_Plugins/FontAwesomeIconsDD/assets/font-awesome/fonts/#FontAwesome" Visibility="Visible" RenderTransformOrigin="0.5,0.5">
        <TextBlock.RenderTransform>
            <TransformGroup>
                <ScaleTransform/>
                <SkewTransform/>
                <RotateTransform Angle="0"/>
                <TranslateTransform/>
            </TransformGroup>
        </TextBlock.RenderTransform>
    </TextBlock>

按下按钮后开始转换的代码:

status_1.Visibility = System.Windows.Visibility.Visible;
status_2.Visibility = System.Windows.Visibility.Visible;


_ani = new DoubleAnimation(0,360, TimeSpan.FromSeconds(5));
_ani.AutoReverse = false;
_ani.RepeatBehavior = System.Windows.Media.Animation.RepeatBehavior.Forever;

Storyboard story = new Storyboard();
story.Children.Add(_ani);
Storyboard.SetTarget(_ani, status_1);
Storyboard.SetTargetProperty(_ani, new PropertyPath("(TextBlock.RenderTransform).(RotateTransform.Angle)"));
story.Begin(this);

如果我将PropertyPath更改为 PropertyPath(“宽度”),那么我可以看到动画发生,导致图标从宽度扩展侧向滑动。所以我知道其余的设置工作。

但是我也知道如果我输入了错误的路径,那么就会发生故障,因此原始路径必须在某种程度上有效。我也知道,如果我将Angle的XAML值修改为其他值,则渲染中会发生实际旋转,因此我知道旋转是可能的。我究竟做错了什么?

2 个答案:

答案 0 :(得分:2)

尝试使用此代码段:

<TextBlock.RenderTransform>
    <TransformGroup>
        <RotateTransform Angle="0" x:Name="textRotation"/>
    </TransformGroup>
</TextBlock.RenderTransform>

并在codeBehind:

_ani = new DoubleAnimation(0, 360, TimeSpan.FromSeconds(5));
_ani.AutoReverse = false;
_ani.RepeatBehavior = RepeatBehavior.Forever;
textRotation.BeginAnimation(RotateTransform.AngleProperty, _ani);

答案 1 :(得分:1)

试试这个

unzip -p '*.zip' | find . -name \*.pdf -exec pdfinfo {} \; | grep Pages | sed -e "s/Pages:\s*//g" | awk '{ sum += $1;} END { print sum; }'