анимация wpf исчезает в заморозке и исчезает - PullRequest
0 голосов
/ 30 сентября 2010

Я хочу показать некоторые данные в форме.Форма должна исчезнуть в течение 5 секунд и отобразить данные с полной непрозрачностью в течение 10 секунд, а затем начать исчезать через 3 секунды.Я делаю это программно в c #.

Пожалуйста, дайте предложения или пример кода.

Спасибо, Раджу

Ответы [ 2 ]

1 голос
/ 30 сентября 2010

Вы должны использовать DoubleAnimationUsingKeyFrames (см. Пример использования c # в документации MSDN здесь ) и анимировать свойство Opacity вашего элемента управления.

0 голосов
/ 30 сентября 2010

Вы можете определить раскадровку в XAML, которая управляет непрозрачностью.Следующий полный пример XAML иллюстрирует это:

  <Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  WindowTitle="Fading Rectangle Example">
  <StackPanel Margin="10">

    <Rectangle
      Name="MyRectangle"
      Width="100" 
      Height="100"
      Fill="Blue">
    </Rectangle>

    <Button Name="BeginButton">Begin</Button>

    <StackPanel.Triggers>
      <EventTrigger RoutedEvent="Button.Click" SourceName="BeginButton">
        <BeginStoryboard Name="MyBeginStoryboard">
          <Storyboard>
            <DoubleAnimation
              Storyboard.TargetName="MyRectangle" 
              Storyboard.TargetProperty="(Rectangle.Opacity)"
              From="1.0" To="0.0" Duration="0:0:5" />
          </Storyboard>
        </BeginStoryboard>
      </EventTrigger>
    </StackPanel.Triggers>
  </StackPanel>
</Page>

Возможно также запустить анимацию из C # в соответствии с вашими требованиями:

public void DoAnimation()
{
  Storyboard opacityStoryboard = FindResource("MyBeginStoryboard") as Storyboard;
  opacityStoryboard.Begin(this);
}

Комбинация двух подходов заключается в определениианимация в XAML и активация ее в C #.

Используя этот шаблон, вы можете определить две раскадровки:

  • Раскадровка, которая изменяет свойство непрозрачности формы с 0,0 до 1,0 в течение пяти секунд
  • Раскадровка, изменяющая свойство непрозрачности формы с 1,0 на 0,0 в течение трех секунд

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

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  WindowTitle="Fading Rectangle Example">
  <StackPanel Margin="10">

    <Rectangle
      Name="MyRectangle"
      Width="100" 
      Height="100"
      Fill="Blue">
    </Rectangle>

    <Button Name="FadeInButton">Fade In</Button>
    <Button Name="FadeOutButton">Fade Out</Button>

    <StackPanel.Triggers>
      <EventTrigger RoutedEvent="Button.Click" SourceName="FadeInButton">
        <BeginStoryboard Name="FadeInStoryboard">
          <Storyboard>
            <DoubleAnimation
              Storyboard.TargetName="MyRectangle" 
              Storyboard.TargetProperty="(Rectangle.Opacity)"
              From="0.0" To="1.0" Duration="0:0:5" />
          </Storyboard>
        </BeginStoryboard>
      </EventTrigger>
      <EventTrigger RoutedEvent="Button.Click" SourceName="FadeOutButton">
        <BeginStoryboard Name="FadeOutStoryboard">
          <Storyboard>
            <DoubleAnimation
              Storyboard.TargetName="MyRectangle" 
              Storyboard.TargetProperty="(Rectangle.Opacity)"
              From="1.0" To="0.0" Duration="0:0:3" />
          </Storyboard>
        </BeginStoryboard>
      </EventTrigger>
    </StackPanel.Triggers>
  </StackPanel>
</Page>

Используя вышеприведенный шаблон «Запуск раскадровки из C #», вы можете в любой момент запустить каждый из раскадровок в своем коде C #.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...