2009-11-10 6 views
1

Вы можете анимировать линейный градиент от:WPF анимировать линейный градиент

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

Fine до сих пор. Вы можете установить цвет для анимации. Как установить свойство To в значение на ресурс градиента, который у вас уже есть?

Можно ли использовать свойство borderbrush target без смещения? В большинстве случаев мне нужно полностью переключить градиент.

EDIT:

нормально, то, как я могу использовать анимацию цвета, чтобы исчезнуть из одного градиента смещения к другому, где цвет назначения не HARDCODED, но его наступающем из ресурса?

пример:

<!-- @ 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, как показано в вашем первоначальном примере. Для компонента «To» раскадровки просто используйте Binding для данного компонента кисти источника. Это имеет преимущество плавного перехода структуры. Например, если вы затухаете между двумя радиальными щетками с двумя разными центральными точками, радиальный центр будет фактически перемещаться по объекту вместо одного затухания, а другой затухает.

Смежные вопросы