在我们的WPF应用程序中,我们需要一个简单的字幕文本控件,它在性能方面轻巧高效。我尝试使用DoubleAnimation
但是它使用了大量资源(主要来自CPU)。我还尝试设置TextBlock的Text属性,并从每100纳秒开始删除一个字符。这也没有提升表现
那么在WPF中设计字幕文本控件的最佳和最有效的方法是什么? (我们正在使用.Net 4.0)
答案 0 :(得分:1)
感谢@Chris W.和this question这是我最终提出的(我想要从rtl语言的左到右动画):
<Window x:Class="WpfApplication9.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication9"
Title="MainWindow" Height="83" Width="222">
<Grid x:Name="layoutRoot">
<Canvas x:Name="canvas">
<TextBlock Text="StackOverflow is just awesome!" FontSize="25" x:Name="tb1" Canvas.Left="-131" Loaded="tb1_Loaded">
<TextBlock.Resources>
<Storyboard x:Key="slide">
<DoubleAnimation From="0" To="{Binding Width, ElementName=tb1}" Duration="00:00:4"
Storyboard.TargetProperty="X"
Storyboard.TargetName="transferCurreny"
RepeatBehavior="Forever"/>
</Storyboard>
</TextBlock.Resources>
<TextBlock.RenderTransform>
<TranslateTransform x:Name="transferCurreny" X="0"/>
</TextBlock.RenderTransform>
<TextBlock.Triggers>
<EventTrigger RoutedEvent="TextBlock.Loaded">
<BeginStoryboard Storyboard="{StaticResource slide}" />
</EventTrigger>
</TextBlock.Triggers>
</TextBlock>
</Canvas>
</Grid>
</Window>
代码隐藏:
using System.Windows;
namespace WpfApplication9
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void tb1_Loaded(object sender, RoutedEventArgs e)
{
tb1.Width = tb1.ActualWidth;
}
}
}