2
我想添加淡入/淡出效果到一些文本(也就是WPF運行對象)。我不希望它一次切換Bold/notBold。我希望它在粗體和正常之間動畫。這可能嗎?可以通過順利更改WPF中的fontweight脈衝文本?
我想添加淡入/淡出效果到一些文本(也就是WPF運行對象)。我不希望它一次切換Bold/notBold。我希望它在粗體和正常之間動畫。這可能嗎?可以通過順利更改WPF中的fontweight脈衝文本?
我不認爲你可以在Fontweights之間進行動畫製作,因爲它們就像沒有「中間」狀態的固定值。我認爲最好的選擇是使用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>
問題有間距。如果它是大膽的,它會更寬,所以新的文本會在過去時發生。仍+1 – Paparazzi
我的猜測是否定的,因爲你只能渲染文字爲粗體或不粗體,所以字符會在兩者之間跳躍。如果它真的很重要,你可以嘗試編寫自己的文本渲染算法,但我不推薦它。更好的選擇是改變字體顏色,因爲你可以很容易地在兩者之間平滑過渡。您也可以使用兩個標籤,一個是粗體和另一個是正常的,然後將文本從一個文字移動到另一個文字(逐個字符),創建更平滑的過渡。 – Trisped
我嘗試動畫重量,但得到一個錯誤 – Paparazzi
我最終脈動的背景顏色,而不是文字。感謝您的顏色建議。 – Brannon