깜박임 속도를 제어하고 코드 뒤에 숨김을 허용하려면 UserControl에서 깜박임이라고하는 라우트 된 이벤트를 제안하는 것이 좋습니다.
이제
RaiseEvent(new RoutedEventArgs(LedControl.Blink));
:이 또한 당신에게 빛을 당신이 원하는 때마다 하나의 시간을 깜박 수있는 기회를 제공합니다 (그러나 종종 당신이 좋아하는 이벤트를 발생하는 타이머를 설정할 수 있습니다 뒤에 코드에서
public static readonly RoutedEvent BlinkEvent = EventManager.RegisterRoutedEvent("Blink", RoutingStrategy.Direct, typeof(RoutedEventHandler), typeof(LedControl));
public event RoutedEventHandler Blink
{
add { AddHandler(BlinkEvent, value); }
remove { RemoveHandler(BlinkEvent, value); }
}
XAML에서 다음 코드는 빛을 볼 수 있도록 것이고, 밝은 녹색 방사형 그라데이션에 타원 (ledEllipse)의 채우기 속성을 설정 한 다음과 같은 경우 회색으로 변경 될 수 있습니다 희미한 '꺼져'녹색 (로 채우기 값을 반환 너는 좋아한다). 깜박임을 오래 지속시키기 위해 기간을 간단히 변경할 수 있습니다. 또한
<UserControl.Triggers>
<EventTrigger RoutedEvent="local:LedControl.Blink">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="glow"
Storyboard.TargetProperty="Opacity"
To="100"
AutoReverse="True"
Duration="0:0:0.075" />
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ledEllipse"
Storyboard.TargetProperty="Fill"
Duration="0:0:0.15">
<ObjectAnimationUsingKeyFrames.KeyFrames>
<DiscreteObjectKeyFrame KeyTime="0:0:0.01">
<DiscreteObjectKeyFrame.Value>
<RadialGradientBrush>
<!--bright Green Brush-->
<GradientStop Color="#FF215416" Offset="1"/>
<GradientStop Color="#FE38DA2E" Offset="0"/>
<GradientStop Color="#FE81FF79" Offset="0.688"/>
</RadialGradientBrush>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
<DiscreteObjectKeyFrame KeyTime="0:0:0.15" >
<DiscreteObjectKeyFrame.Value>
<RadialGradientBrush>
<!--dim Green Brush-->
<GradientStop Color="#FF21471A" Offset="1"/>
<GradientStop Color="#FF33802F" Offset="0"/>
<GradientStop Color="#FF35932F" Offset="0.688"/>
</RadialGradientBrush>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames.KeyFrames>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</UserControl.Triggers>
, 내가 직접 'ledEllipse'타원을 참조하고하고 (레드 라이트 내가 나의의 주도 채우기 속성을 시작하는 또 다른 방사형 그라데이션 브러시입니다) 다음으로 ledControl에 정의되어 DropShadowEffect '빛'을 해당하는 것 :
<Ellipse x:Name="statusLight" Height="16" Width="16" Margin="0" Fill="{DynamicResource redLight}" >
<Ellipse.Effect>
<DropShadowEffect x:Name="glow" ShadowDepth="0" Color="Lime" BlurRadius="10" Opacity="0" />
</Ellipse.Effect>
</Ellipse>
참고 : DropShadowEffect 닷넷 3.5에 도입 된,하지만 당신은 제거 할 수 있습니다 당신은 광선 효과를 싶지 않아 (하지만 단색 대조 배경에 좋은 모양)합니다.
Visual Studio에서 애니메이션 작업을하려고한다고 가정합니다. Expression Blend를 사용하여 애니메이션을 만드는 데 필요한 디자인 도구가 있습니다. –
나는 그렇다. 나는 이것에 약간의 시간을 보내고, 어디에도 가지 않고, 마감 시간을 지키고 난 후에, 나는 약간의 광란을 시작했고, 나의 머리를 조금 잃어 버렸다라고 인정할 것이다. Expression Blend를 해고하고 만든 스토리 보드가 잘 작동하는 것을 보았습니다. 나는 단지 내가 원하는 행동을하기 위해 약간의 조정을해야했다. – MedicineMan
타이머 나 콜백과 같이 할 수 있습니까? 타원이 번갈아 나오는 두 개의 타원이 있습니까? 하지만 나는 팍스의 대답도 좋아한다. :) –