Я создал счастливое колесо рисования, которое может вращаться при загрузке формы и вращаться с ускорением и замедлением при нажатии кнопки.Однако вместо этого мне нужно использовать таймер диспетчера (так как это удачное право на розыгрыш, я не должен устанавливать длительность исправления.) При щелчке он должен вращаться между продолжительностью, а когда он останавливается, запрашивает приз, который следует извлечь.из sqltable.Код, который у меня сейчас есть, предназначен для события загрузки и раскадровки.
private void Grid_Loaded(object sender, RoutedEventArgs e)
{
myMediaElement.Play();
var da = new DoubleAnimation(0, 360, new Duration(TimeSpan.FromSeconds(6)));
var rt = new RotateTransform();
ellipse.RenderTransform = rt;
ellipse.RenderTransformOrigin = new Point(0.5, 0.5);
da.RepeatBehavior = RepeatBehavior.Forever;
rt.BeginAnimation(RotateTransform.AngleProperty, da);
}
<Button x:Name="Spin" Width="189" HorizontalAlignment="Left" Margin="593,717,0,38">
Spin
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<BeginStoryboard>
<Storyboard x:Name="Mystoryboard" Completed="Mystoryboardcompleted" FillBehavior="Stop">
<DoubleAnimation Storyboard.TargetName="ellipse"
Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)" AutoReverse="False"
AccelerationRatio="1" Duration="0:0:4" By="2000" />
<DoubleAnimation Storyboard.TargetName="ellipse"
Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)" AutoReverse="False"
DecelerationRatio="1" Duration="0:0:4" By="1200" />
<ColorAnimationUsingKeyFrames Storyboard.TargetName="ellipse1"
Duration="0:0:4"
Storyboard.TargetProperty="(Ellipse.Fill).(SolidColorBrush.Color)">
<ColorAnimationUsingKeyFrames.KeyFrames>
<DiscreteColorKeyFrame KeyTime="0:0:0" Value="White"/>
<DiscreteColorKeyFrame KeyTime="0:0:1" Value="Green"/>
<DiscreteColorKeyFrame KeyTime="0:0:2" Value="White"/>
<DiscreteColorKeyFrame KeyTime="0:0:3" Value="Green"/>
<DiscreteColorKeyFrame KeyTime="0:0:4" Value="Green"/>
</ColorAnimationUsingKeyFrames.KeyFrames>
</ColorAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
Я реализовал этот код для таймера диспетчера, однако я хотел бы вместо этого выполнить действие раскадровки во время работы таймера диспетчера.,
private DispatcherTimer _timer = new DispatcherTimer();
private Random rand = new Random();
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
_timer.Interval = TimeSpan.FromSeconds(rand.Next(5, 10)); // From 5 s to 10 s
RenderTransformOrigin = new Point(0.5, 0.5);
DoubleAnimation da = new DoubleAnimation();
da.From = 0;
da.To = 360;
da.Duration = new Duration(TimeSpan.FromSeconds(0.5));
RotateTransform rt = new RotateTransform();
ellipse.RenderTransform = rt;
rt.BeginAnimation(RotateTransform.AngleProperty, da);
}