2010-03-19 6 views
1

사용자가 시작 버튼을 클릭 할 때 시간이 오래 걸리는 응용 프로그램이 있습니다. 이 과정에서 불투명도를 0에서 1로 또는 그 반대로 변경하고 불투명도를 변경하면서 여러 색상 사이에서 전경색을 변경하는 등 레이블을 통해 애니메이션을 수행하고 싶습니다. 배경 작업자가 작업을 끝내면 애니메이션 작업을 중단하고 싶습니다. 어떻게해야합니까? 어떻게 애니메이션을 시작하고 C#에서 멈출 수 있습니까?wpf는 배경 작업자가 작업을 완료 할 때까지 애니메이션 작업을 수행합니다.

대단히 감사합니다.

답변

2

귀하의 애니메이션은 스토리 보드에서 호스팅됩니다.

  • 애니메이션을 무기한 실행하려면 스토리 보드의 RepeatBehavior를 Forever로 설정하십시오.
  • BackgroundWorker를 시작할 때 애니메이션을 시작하려면 Storyboard.Begin 메서드를 호출하십시오.
  • BackgroundWorker가 끝날 때 애니메이션을 중지하려면 RunWorkerCompleted 이벤트 처리기에서 Storyboard.Stop 메서드를 호출합니다.

    <Window.Resources> 
        <Storyboard x:Key="sb" Duration="0:0:2" RepeatBehavior="Forever"> 
        <DoubleAnimation Storyboard.TargetName="l" 
            Storyboard.TargetProperty="Opacity" 
            From="1" To="0" AutoReverse="True" /> 
        <ColorAnimation Storyboard.TargetName="l" 
            Storyboard.TargetProperty="Foreground.Color" 
            From="HotPink" To="Lime" AutoReverse="True" /> 
        </Storyboard> 
    </Window.Resources> 
    
    <StackPanel> 
        <Label Name="l" FontSize="72">Oh noes!</Label> 
        <Button Click="Button_Click">Animate me!</Button> 
    </StackPanel> 
    

    그리고 Button_Click 핸들러 : 여기

은 예입니다

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    ((Storyboard)(FindResource("sb"))).Begin(); 
    // and kick off your BackgroundWorker 
} 
하지만 당신은 어떻게 (영원히 repeatbehaviour로) 스토리 보드의 구현에 대한 XAML의 코드 조각을 게시 할 수
+0

정말 고마워 불투명도와 전경색에 대한 애니메이션이 있습니까? 나는 xaml에 새로 왔어, 미안. – toni

+0

추가 된 예 - 멋진 스타일은 아니지만 시작해야합니다! – itowlson

+0

대단히 감사합니다. 한 가지 예를 들자면, 일련의 애니메이션을 수행하는 것이 가능하다고 들었습니다. 예를 들어이 경우 불투명 애니메이션을 먼저 수행 한 다음 애니메이션이 끝나면 전경 애니메이션을 시작합니다. 이 작업을 원한다면, 스토리 보드에서 불투명 애니메이션이 끝날 때 (또는 이전 또는 동시에) 전경 애니메이션을 시작하기 위해 어떤 수정을해야합니까? 매우 감사합니다. – toni

관련 문제