Анимированный фоновый контроль в WPF? - PullRequest
11 голосов
/ 29 августа 2009

В моем приложении WPF я хочу, чтобы анимированный фон был похож на Media Center . Есть ли бесплатный контроль, который предлагает это?

Ответы [ 5 ]

9 голосов
/ 21 ноября 2011

Способ анимации фона:

Также можно установить для TargetProperty значение "(Фон). (SolidColorBrush.Color)", как в этом примере:

<ColorAnimation
    Storyboard.TargetName = "lblSubGroup" 
    Storyboard.TargetProperty = "(Background).(SolidColorBrush.Color)"
    From = "White"
    To = "Navy"
    Duration = "0:0:3"
    AutoReverse = "True"/>
8 голосов
/ 03 сентября 2009

Я бы предпочел анимировать фон границы с помощью раскадровки. Это довольно просто, и вы можете создать анимацию настолько сложной, насколько захотите. Вот краткий пример:

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Window.Triggers>
        <EventTrigger RoutedEvent="Window.Loaded">
            <BeginStoryboard>
                <Storyboard AutoReverse="True" BeginTime="0" >
                    <DoubleAnimation Storyboard.TargetName="Foo"
                                     Storyboard.TargetProperty="Offset"
                                     From="0.2" To="0.8" Duration="0:0:10"/>
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </Window.Triggers>
    <Border>
        <Border.Background>
            <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
                    <GradientStop Color="Yellow" Offset="0"/>
                    <GradientStop Color="Orange" Offset="0.2"  x:Name="Foo"/>
                    <GradientStop Color="Red" Offset="1"/>               
            </LinearGradientBrush>
        </Border.Background>
    <!-- put your windowcontent(grid etc.) here -->
    </Border>
</Window>

Вы также должны увидеть статью MSDN Обзор анимации .

1 голос
/ 03 сентября 2009

Я бы попробовал использовать векторную анимацию, если это возможно, воспроизведение видео (которое должно автоматически масштабироваться) не является оптимальным (с точки зрения обработки, масштабирования изображения и т. Д.).

На мой взгляд, было бы намного лучше использовать векторные фигуры / кисти (даже 3D?).

1 голос
/ 29 августа 2009

Вы можете использовать сетку и поместить элемент видео в последнем z-порядке, а его ширину и высоту установить автоматически, и вы можете воспроизвести видео в нем и поставить перед ним контейнер.

В Grid вы можете размещать объекты в указанном z-порядке, вы можете создать свой собственный элемент управления анимацией и запускать его как первый элемент управления, добавленный в сетку.

В настоящее время нет свойства Background, предлагающего анимацию, они могут загружать только изображения.

0 голосов
/ 03 сентября 2009

Google "фоновая анимация". Вы получите 18 500 000 показов.

...