Анимированный фоновый элемент управления в WPF?

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


person RCIX    schedule 29.08.2009    source источник
comment
Упоминается в .NET Rocks, эпизод 952, 03 мин. 52 сек. – 05 мин. 35 сек.   -  person Peter Mortensen    schedule 21.02.2014
comment
ВТФ? Это круто… ^_^   -  person Marcel B    schedule 24.07.2014


Ответы (5)


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

<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 Обзор анимации.

person Marcel B    schedule 03.09.2009

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

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

<ColorAnimation
    Storyboard.TargetName = "lblSubGroup" 
    Storyboard.TargetProperty = "(Background).(SolidColorBrush.Color)"
    From = "White"
    To = "Navy"
    Duration = "0:0:3"
    AutoReverse = "True"/>
person Björn    schedule 21.11.2011

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

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

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

person Akash Kava    schedule 29.08.2009
comment
Тогда мой вопрос таков: где взять такое видео? :) - person RCIX; 29.08.2009
comment
Ну, есть iStockPhoto и подобные сайты по продаже бесплатного контента, вы можете использовать один из них, они не такие уж дорогие, и вы можете получить богатое разнообразие фоновых видео. - person Akash Kava; 29.08.2009

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

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

person Darknight    schedule 03.09.2009

Гуглите "фоновая анимация". Вы получите 18 500 000 просмотров.

person David Veeneman    schedule 03.09.2009