基本信息
源码名称:用WPF写的转盘,分享给大家学习
源码大小:0.11M
文件格式:.rar
开发语言:C#
更新时间:2014-04-25
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 1 元 
   源码介绍

用WPF写一个简单的转盘

public partial class Turntable : UserControl     {
        public Turntable()
        {
            InitializeComponent();
 
            int angle = 5040;
            for (int i = 0; i < 8; i  )
            {
                angle  = 45;
                _ListAngle.Add(angle);
            }
        }
 
        /// <summary>         /// 保存八个角度         /// </summary>         List<int> _ListAngle = new List<int>();
        /// <summary>         /// 产生随机数         /// </summary>         Random _Random = new Random();
        int _Index = 0;
        int _OldAngle = 0;
        private void btnStartTurntable_Click(object sender, RoutedEventArgs e)
        {
            btnStartTurntable.IsEnabled = false;
            _Index = _Random.Next(0, 8);
            Storyboard sb = (Storyboard)this.FindResource("zhuandong");
            sb.Completed -= this.sb_Completed;
            sb.Completed  = new EventHandler(sb_Completed);
            ((SplineDoubleKeyFrame)((DoubleAnimationUsingKeyFrames)sb.Children[0]).KeyFrames[0]).Value = _OldAngle;
            ((SplineDoubleKeyFrame)((DoubleAnimationUsingKeyFrames)sb.Children[0]).KeyFrames[3]).Value = _ListAngle[_Index];
            sb.Begin();
        }
 
        void sb_Completed(object sender, EventArgs e)
        {
            DispatcherTimer dt = new DispatcherTimer();
            dt.Interval = TimeSpan.FromSeconds(0.3);
            dt.Tick  = delegate 
            {
                dt.Stop();
                _OldAngle = (_ListAngle[_Index] % 360);
                btnStartTurntable.IsEnabled = true;
                AwardProcess(GetAward(_ListAngle[_Index]));
            };
            dt.Start();
        }
 
        public delegate void AwardDelegate(Award award);
 
        /// <summary>         /// 返回转到的奖项信息         /// </summary>         public event AwardDelegate AwardProcess;
 
        private Award GetAward(int angle)
        {
 
            Award result = Award.谢谢参与;
            switch (angle)
            {
                case 5085:
                    result = Award.一等奖;
                    break;
                case 5130:
                    //result = "谢谢参与";                     break;
                case 5175:
                    result = Award.二等奖;
                    break;
                case 5220:
                    //result = "谢谢参与";                     break;
                case 5265:
                    result = Award.三等奖;
                    break;
                case 5310:
                    //result = "谢谢参与";                     break;
                case 5355:
                    result = Award.幸运奖;
                    break;
                case 5400:
                    //result = "谢谢参与";                     break;
                default:
                    break;
            }
 
            return result;
        }
    }
 
    public enum Award     {
        一等奖,
        二等奖,
        三等奖,
        幸运奖,
        谢谢参与
    }