あなたのコードの背後で点滅レートなどをより詳細に制御できるようにするには、私のUserControlでBlinkというルーティングイベントを使用することをお勧めします:
今
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では、次のコードではグローが表示され、楕円(fillEllipse)のfillプロパティを明るい緑の放射状グラデーションに設定し、塗りつぶし値を薄暗い「unlit」緑に戻しますあなたは好きです)。あなたは単に瞬きを長くするために継続時間を変更することができます。また
<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」楕円を参照していますし、それが(レッドライトは私が私の主導fillプロパティを開始するだけで、別の放射状グラデーションブラシである)は、次のよう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は.NET 3.5で導入されましたが、削除ができることをあなたはグロー効果を望んでいない(それはソリッドカラー対照的な背景に良さそうに見えます)場合。
私はあなたがVisual Studioでアニメーションをしようとしていると仮定します。Expression Blendを使用するには、アニメーションを作成するためのデザインツールがあります。 –
私は午前中です。私は、これに時間を費やして、どこにも行かずに、締め切りに逆らってやって来ると、少し狂ったようになり始め、頭を少し失いました。私はExpression Blendを起動し、作成したストーリーボードがうまく動作することを確認しました。私はちょっとした調整をして、自分が望む行動を取る必要がありました。 – MedicineMan
タイマーやコールバックのようなもので、視認性が交互に変わる2つの省略記号を使って行うことはできますか?しかし私はパックスの答えも好きです。 :) –