2009-11-10 158 views
1

您可以通過動畫線性漸變:WPF動畫線性漸變

<Storyboard x:Key="Focused" > 
<DoubleAnimation Duration="0:0:0.3" Storyboard.TargetProperty= 
"BorderBrush.GradientStops[0].Offset" Storyboard.TargetName="Bd"/> 
</Storyboard> 

精細至今。你可以設置一個顏色來爲其設置動畫。如何設置To屬性將 指向已有的漸變資源?

是否有可能使用borderbrush目標屬性沒有偏移?在大多數情況下,我需要完全切換漸變。

編輯:

好吧,那我該如何使用彩色動畫從一個梯度偏移到另一個,其中目標顏色不是硬編碼,但它從一個資源即將消失?

例如:

<!-- @ MouseOver --> 
<LinearGradientBrush x:Key="MouseOverBrush" StartPoint="0,0" EndPoint="0,1"> 
    <GradientStop Color="#FF656565" Offset="0"/> 
    <GradientStop Color="#33656565" Offset="1"/> 
</LinearGradientBrush> 

<Style x:Key="CheckBoxStyle" TargetType="{x:Type CheckBox}"> 
    <Setter Property="Foreground" Value="{StaticResource CheckBoxForeground}"/> 
    <Setter Property="Background" Value="{StaticResource CheckBoxGradientBrush}"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type CheckBox}"> 
       <Border x:Name="Bd" 
         Background="{TemplateBinding Background}"> 
        <ContentPresenter 
         Content="{TemplateBinding Content}" 
         SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" 
         RecognizesAccessKey="True"/> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsMouseOver" Value="true"> 
         <Setter TargetName="Bd" Property="Background" Value="{StaticResource MouseOverBrush}"/>   
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

,如果我想動畫BD的鼠標背景到mouseoverbrush,我該怎麼辦呢?

回答

0

完整的猜測,沒有測試支持它,用堆積的批判性思維等......但你究竟如何意味着在一個漸變和另一個漸變之間「淡化」?我的意思是它們是對象實例,每個可能有許多不同的漸變點等。除非MS內置了一些魔術醬,否則動畫師不會檢查這個(我是否確定可以設置一個滿足其所有客戶的算法)。

相反,嘗試設置漸變併爲顏色之間的漸變點設置動畫。

0

您可以使用ColorAnimation將其從一種顏色變爲另一種顏色。

3

你有兩個選擇,這取決於你想,你是否不知道刷的參與結構的影響:

  1. 你可以從任何刷使用<VisualBrush>具有畫布淡出到另一個包含兩個重疊的1x1矩形,與兩個畫筆中的每一個一起繪製。您可以將VisualBrush內兩個矩形的不透明度設置爲從一個畫筆淡入到另一個畫筆。無論實際的畫筆是什麼 - 這都可以工作 - 例如,您可以從放射漸變漸變爲線性漸變,或從拼貼畫刷到可視畫筆。

  2. 您可以通過動畫invidividual屬性在類似結構的兩個畫筆之間淡入淡出,如您的初始示例所示。對於故事板的「收件人」組件,僅對源刷的給定組件使用Binding。這具有結構平穩過渡的優點。例如,如果您在具有兩個不同中心點的兩個徑向畫筆之間褪色,則徑向中心實際上會移動穿過對象,而不是一個淡出和另一個淡入。