一部のテキスト (別名、WPF Run オブジェクト) にフェードイン/アウト効果を追加したいと考えています。Bold/notBold を一度に切り替えたくありません。太字と通常の間でアニメーション化してほしい。これは可能ですか?
1478 次
1 に答える
2
フォントウェイトは「中間」状態を持たない固定値のようなものであるため、フォントウェイト間でアニメーション化できるとは思いません。最善の策は、2 つのテキストブロック (同じテキストを持つノーマルとボールド) を用意し、両方の不透明度をアニメートして、ノーマルをフェードアウトさせ、ボールドをフェードインさせることだと思います。この方法では、フォントのように見えます。通常から太字にアニメーションで「移行」しています。
<Control>
<Control.Template>
<ControlTemplate>
<DockPanel>
<ToggleButton x:Name="btn" Content="IsBold"/>
<Grid Width="200">
<TextBlock Text="Transition" x:Name="normal" TextAlignment="Center"/>
<TextBlock Text="Transition" FontWeight="Bold" Opacity="0" x:Name="bold" TextAlignment="Center"/>
</Grid>
</DockPanel>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" SourceName="btn" Value="True">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard Duration="00:00:01">
<DoubleAnimation Storyboard.TargetName="normal" Storyboard.TargetProperty="Opacity" To="0"/>
<DoubleAnimation Storyboard.TargetName="bold" Storyboard.TargetProperty="Opacity" To="1"/>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard>
<Storyboard Duration="00:00:01">
<DoubleAnimation Storyboard.TargetName="normal" Storyboard.TargetProperty="Opacity" To="1"/>
<DoubleAnimation Storyboard.TargetName="bold" Storyboard.TargetProperty="Opacity" To="0"/>
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Control.Template>
</Control>
于 2012-10-30T19:02:18.763 に答える