Silverlight: использовать ресурс GradientBrush для анимации состояния - PullRequest
1 голос
/ 03 января 2011

У меня есть набор элементов управления (Button, ToggleButton). Я хочу иметь один и тот же стиль, поэтому я создал несколько градиентных кистей для нормальных / отключенных / включенных состояний в моем ResourceDictionary, например, «ButtonFillBrush», «ButtonFillMouseOverBrush» и т. Д.Они определены как глобальные многократно используемые ресурсы кисти.

Я знаю, что возможно изменить отдельные остановки градиента в анимации внутри состояния, например:

<VisualState x:Name="MouseOver">
   <Storyboard>
      <ColorAnimation Duration="0" To="#FF041D06" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)" Storyboard.TargetName="path" d:IsOptimized="True"/>
      <ColorAnimation Duration="0" To="#FF118519" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)" Storyboard.TargetName="backgroundRectangle" d:IsOptimized="True"/>
    </Storyboard>
</VisualState>

Теперь язнаю, что в VisualState Manager можно сделать что-то вроде:

<VisualState x:Name="MouseOver">
   <Storyboard>
      <ColorAnimation Duration="0" To="ButtonFillMouseOverBrush" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush)" Storyboard.TargetName="backgroundRectangle" d:IsOptimized="True"/>
    </Storyboard>
</VisualState>

Спасибо!

Обновление : использование ответа об обращении со StaticResource и некоторых другихsearch: http://wildermuth.com/2008/07/18/Animating_Brushes_with_ObjectAnimationUsingKeyFrames

<VisualState x:Name="MouseOver">
  <Storyboard>
    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="backgroundRectangle"                      
Storyboard.TargetProperty="Fill">
      <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{StaticResource ButtonFillMouseOverBrush}" />
    </ObjectAnimationUsingKeyFrames>
  </Storyboard>
</VisualState>

Итак, было бы неплохо иметь BrushAnimation или что-то в этом роде ...

Rogier

1 Ответ

0 голосов
/ 03 января 2011

Более подробную информацию о ресурсных словарях и их использовании вы можете найти здесь здесь . Однако для вашего вопроса о цветной анимации по этой ссылке можно найти много информации относительно анимации Silverlight (включая цветную анимацию) Быстрый запуск анимации Silverlight

...