c#自制抽獎小程序


        #region 第一部分界面設計
        const int N = 8;
        Button button = new Button();
        Image[] images = new Image[N];
        PictureBox[] pictures = new PictureBox[N];
        int[] dx = new int[N] { 112, 112, 0, 0, -113, -113, 0, 0 };
        int[] dy = new int[N] { 0, 0, 113, 113, 0, 0, -112, -112 };
        private void Form1_Load(object sender, EventArgs e)
        {
            InitialImage();
            InitialSurface();//初始化窗體界面
        }
        //添加圖片
        private void InitialImage()
        {
            images[0] = Resources.保溫杯;
            images[1] = Resources.體重秤;
            images[2] = Resources.x1;
            images[3] = Resources.台燈;
            images[4] = Resources.耳機;
            images[5] = Resources.x2;
            images[6] = Resources.電動牙刷;
            images[7] = Resources.時鍾;
            this.BackgroundImage = Resources.formbg;
        }
        //初始化界面
        private void InitialSurface()
        {
            Panel pa = new Panel();
            pa.Size = new System.Drawing.Size(342, 348);
            pa.BackgroundImage = Resources.bga1;
            pa.BackgroundImageLayout = ImageLayout.Stretch;
            pa.Location = new Point(91, 316);
            pa.BackColor = Color.Transparent;
            pa.TabIndex = 0;
            this.Controls.Add(pa);
            int x = 11, y = 11;
            for (int i = 0; i < N; i++)
            {
                x += dx[i];
                y += dy[i];
                PictureBox box = new PictureBox();
                box.Size = new Size(95, 95);
                box.Location = new Point(x, y);
                box.Image = images[i];
                box.SizeMode = PictureBoxSizeMode.StretchImage;
                box.BorderStyle = BorderStyle.FixedSingle;
                box.Padding = new Padding(4);
                box.BackColor = Color.White;
                pictures[i] = box;
                pa.Controls.Add(box);
            }
            button.Text = "開始" + "\r\n" + "抽獎";
            button.Font = new Font("宋體", 14, FontStyle.Bold);
            button.Size = new Size(97, 97);
            button.Location = new Point(123, 124);
            button.Click += Button_Click;
            pa.Controls.Add(button);

            PictureBox box1 = new PictureBox();
            box1.Image = Resources.bgGIF;
            box1.SizeMode = PictureBoxSizeMode.StretchImage;
            box1.BorderStyle = BorderStyle.None;
            box1.Size = new Size(395, 400);
            box1.Location = new Point(64, 290);
            this.Controls.Add(box1);
            this.MaximizeBox = false;
            this.BackgroundImageLayout = ImageLayout.Stretch;
            this.AutoSizeMode = AutoSizeMode.GrowAndShrink;
        } 
        #endregion
第一部分界面設計

界面效果如下:

實現旋轉是使用的改變控件大小,背景顏色(把padding設置4可以看見背景顏色)。

 1 Random random = new Random();
 2         SoundPlayer sp = new SoundPlayer(Resources.Untitled_Project);
 3         int circle;
 4         int index;
 5         int stopNum;
 6         bool flag = true;//奇數和偶數的標志,為true表示偶數
 7         private void Button_Click(object sender, EventArgs e)
 8         {
 9             circle = random.Next(5, 8);//隨機產生旋轉的圈數
10             stopNum = random.Next(0, 8);//隨機確定選擇抽中獎品的下標
11             button.Enabled = false;
12             time.Interval = 10;
13             index = 0;
14             flag = true;
15             sp.Play();
16             time.Start();
17         }
18 
19         private void time_Tick(object sender, EventArgs e)
20         {
21             if (flag)//放大picturebox,實現轉動效果
22             {
23                 pictures[index].Size = new Size(103, 103);
24                 pictures[index].BackColor = Color.YellowGreen;
25                 flag = false;
26             }
27             else if (flag == false)//將原來的picturebox縮放回原來的尺寸
28             {
29                 pictures[index].Size = new Size(95, 95);
30                 pictures[index].BackColor = Color.White;
31                 index++;
32                 flag = true;
33             }
34             if (index == 8)
35             {
36                 index = 0;
37                 circle -= circle > 0 ? 1 : 0;//每次轉動8次,旋轉的圈數-1
38             }
39             //倒數兩圈慢
40             time.Interval = circle > 2 ? 10 : 100;
41             if (circle == 0 && index == stopNum)
42             {
43                 pictures[index].Size = new Size(103, 103);
44                 pictures[index].BackColor = Color.YellowGreen;
45                 pictures[index].Location = new Point(pictures[index].Location.X - 4, pictures[index].Location.Y - 4);
46                 StopRotate(index);
47                 pictures[index].Size = new Size(95, 95);
48                 pictures[index].BackColor = Color.White;
49                 pictures[index].Location = new Point(pictures[index].Location.X + 4, pictures[index].Location.Y + 4);
50             }
51         }
旋轉代碼

停止再加上一個簡單的概率會有點不了不流暢。

 1  private void StopRotate(int sum)
 2         {
 3             string message = null;
 4             switch (index)
 5             {
 6                 case 0: if (random.Next(0, 2) == stopNum) message = "恭喜獲取保溫杯一個"; else { circle = 1; stopNum = 2; } break;//1/2  14  7%
 7                 case 1: if (random.Next(0, 3) == stopNum) message = "恭喜獲取體重秤一個"; else { circle = 1; stopNum = 5; } break;//1/3  21  4%
 8                 case 2: message = "謝謝惠顧"; break;
 9                 case 3: if (random.Next(3, 7) == stopNum) message = "恭喜獲取台燈一個"; else { circle = 1; stopNum = 5; } break;//1/4   28   3%
10                 case 4: if (random.Next(0, 5) == stopNum) message = "恭喜獲取耳機一個"; else { circle = 1; stopNum = 5; } break;//1/4  28   3%
11                 case 5: message = "謝謝惠顧"; break;
12                 case 6: if (random.Next(6, 8) == stopNum) message = "恭喜獲取電動牙刷一個"; else { circle = 1; stopNum = 2; } break;//1/2  1/14   7&
13                 case 7: if (random.Next(7, 10) == stopNum) message = "恭喜獲取時鍾一個"; else { circle = 1; stopNum = 2; } break;//1/3   1/21    4%
14             }
15             if (message != null)
16             {
17                 sp.Stop();
18                 time.Stop();//先關閉定時器
19                 MessageBox.Show(message);
20                 this.button.Enabled = true;
21             }
22         }
停止代碼

簡單的旋轉程序就完成了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM