Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何为幸运抽奖轮(C,XAML)添加随机调度程序计时器_C#_Mysql_Sql_Wpf_Xaml - Fatal编程技术网

C# 如何为幸运抽奖轮(C,XAML)添加随机调度程序计时器

C# 如何为幸运抽奖轮(C,XAML)添加随机调度程序计时器,c#,mysql,sql,wpf,xaml,C#,Mysql,Sql,Wpf,Xaml,我已经创建了一个幸运抽奖轮,它能够在窗体加载时旋转,并在单击按钮时以加速和减速的方式旋转。但是,我需要使用调度计时器,因为这是一个幸运抽奖,所以我不应该设置固定的持续时间。单击时,它应该在持续时间之间旋转,当它停止时,它将提示从sqltable中提取奖品。 我目前拥有的代码用于加载事件和情节提要 private void Grid_Loaded(object sender, RoutedEventArgs e) { myMediaElement.Play(

我已经创建了一个幸运抽奖轮,它能够在窗体加载时旋转,并在单击按钮时以加速和减速的方式旋转。但是,我需要使用调度计时器,因为这是一个幸运抽奖,所以我不应该设置固定的持续时间。单击时,它应该在持续时间之间旋转,当它停止时,它将提示从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>

假设XAML中有一个椭圆元素

<Ellipse Width="200" Height="200" RenderTransformOrigin="0.5,0.5" ...>
    <Ellipse.RenderTransform>
        <RotateTransform x:Name="rotateTransform"/>
    </Ellipse.RenderTransform>
</Ellipse>

你试过使用调度员吗?你遇到了什么问题?@ShivaniKatukota我已经编辑了我的问题,但是我可以在故事板的持续时间内使用调度计时器吗?你根本不需要计时器。单击按钮时,只需创建并启动一个新动画,并将其“按”值设置为随机数。@Clemens,因为“我的按钮”具有如上所示的路由事件情节提要。你的意思是我可以为角度设置一个范围吗?欢迎来到堆栈溢出!欢迎来到Stackoverflow.com!请让你的问题成为一个最小的、完整的、可验证的例子。还要检查一下,让你的帖子有责任感。
<Ellipse Width="200" Height="200" RenderTransformOrigin="0.5,0.5" ...>
    <Ellipse.RenderTransform>
        <RotateTransform x:Name="rotateTransform"/>
    </Ellipse.RenderTransform>
</Ellipse>
var totalRotationAngle = rand.NextDouble() * 3600;

rotateTransform.BeginAnimation(RotateTransform.AngleProperty, new DoubleAnimation
{
    By = totalRotationAngle,
    Duration = TimeSpan.FromMilliseconds(totalRotationAngle)
});