2012-05-31 35 views
0

我試圖想出創造性的解決方案給這個特定的效果:動畫疊加顏色在一個TextBlock

我最初的想法:用色度鍵着色器效果的動態調整大小的矩形將在文本上滑動到位。但是,我不想殺死文本邊緣的保真度,而這些邊緣往往會在着色器中出現。

我也考慮過使用FormattedText類,儘管我不確定它支持我想要做什麼。

有什麼建議嗎?

編輯 爲了澄清,文本將本質上是'TabItem'。我希望突出顯示的塊將所有選項卡項目浮動到所選項目。目前,它們在佈局中使用邏輯來處理其定位。一個簡單的動畫似乎不夠。

回答

3

這應該給你想要的效果。這爲漸變顏色使用了漸變畫筆,但它使用了3個漸變光圈,以確保顏色從一個漸變到下一個漸變,並且兩個漸變之間沒有漸變。

<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:local="clr-namespace:TestingWPF" 
    mc:Ignorable="d" 
    x:Class="TestingWPF.TestWindow" 
    d:DesignWidth="477" d:DesignHeight="214" 
    Background="Black"> 

    <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="74" FontWeight="Bold"> 
     <TextBlock.Foreground> 
      <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5"> 
       <GradientStop Color="White" Offset="0"/> 
       <GradientStop x:Name="WhiteOffset" Color="White" Offset="1"/> 
       <GradientStop x:Name="GrayOffset" Color="Gray" Offset="1"/> 
      </LinearGradientBrush> 
     </TextBlock.Foreground> 
     <TextBlock.Triggers> 
      <EventTrigger RoutedEvent="Loaded"> 
       <BeginStoryboard> 
        <Storyboard Storyboard.TargetProperty="Offset" Duration="0:0:1" RepeatBehavior="Forever"> 
         <DoubleAnimation Storyboard.TargetName="WhiteOffset" From="0" To="1" /> 
         <DoubleAnimation Storyboard.TargetName="GrayOffset" From="0" To="1" /> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger> 
     </TextBlock.Triggers> 
     Some Text 
    </TextBlock> 
</Window> 
+0

感謝您的回覆。我考慮過這一點,但認爲這不是一個真正可行的選擇,因爲我打算將突出顯示作爲選項卡控件的「選擇」。所以這可能是可能的,但有點混亂。例如,選項卡控件的標題是一個嵌入了這些項目的Canvas。絕對有處理定位的邏輯。 「塊」應該能夠在標籤項目中一直顯着移動到適當的項目。我將編輯我的帖子以反映這一點。 Upvote雖然回答了我的問題。 – erodewald

+1

+1,我的答案前一分鐘也短一點 –

+0

但是,您有一個GIF! –