c#自制抽奖小程序
#region 第一部分界面设计
const int N = ;
Button button = new Button();
Image[] images = new Image[N];
PictureBox[] pictures = new PictureBox[N];
int[] dx = new int[N] { , , , , -, -, , };
int[] dy = new int[N] { , , , , , , -, - };
private void Form1_Load(object sender, EventArgs e)
{
InitialImage();
InitialSurface();//初始化窗体界面
}
//添加图片
private void InitialImage()
{
images[] = Resources.保温杯;
images[] = Resources.体重秤;
images[] = Resources.x1;
images[] = Resources.台灯;
images[] = Resources.耳机;
images[] = Resources.x2;
images[] = Resources.电动牙刷;
images[] = Resources.时钟;
this.BackgroundImage = Resources.formbg;
}
//初始化界面
private void InitialSurface()
{
Panel pa = new Panel();
pa.Size = new System.Drawing.Size(, );
pa.BackgroundImage = Resources.bga1;
pa.BackgroundImageLayout = ImageLayout.Stretch;
pa.Location = new Point(, );
pa.BackColor = Color.Transparent;
pa.TabIndex = ;
this.Controls.Add(pa);
int x = , y = ;
for (int i = ; i < N; i++)
{
x += dx[i];
y += dy[i];
PictureBox box = new PictureBox();
box.Size = new Size(, );
box.Location = new Point(x, y);
box.Image = images[i];
box.SizeMode = PictureBoxSizeMode.StretchImage;
box.BorderStyle = BorderStyle.FixedSingle;
box.Padding = new Padding();
box.BackColor = Color.White;
pictures[i] = box;
pa.Controls.Add(box);
}
button.Text = "开始" + "\r\n" + "抽奖";
button.Font = new Font("宋体", , FontStyle.Bold);
button.Size = new Size(, );
button.Location = new Point(, );
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(, );
box1.Location = new Point(, );
this.Controls.Add(box1);
this.MaximizeBox = false;
this.BackgroundImageLayout = ImageLayout.Stretch;
this.AutoSizeMode = AutoSizeMode.GrowAndShrink;
}
#endregion
第一部分界面设计
界面效果如下:

实现旋转是使用的改变控件大小,背景颜色(把padding设置4可以看见背景颜色)。
Random random = new Random();
SoundPlayer sp = new SoundPlayer(Resources.Untitled_Project);
int circle;
int index;
int stopNum;
bool flag = true;//奇数和偶数的标志,为true表示偶数
private void Button_Click(object sender, EventArgs e)
{
circle = random.Next(, );//随机产生旋转的圈数
stopNum = random.Next(, );//随机确定选择抽中奖品的下标
button.Enabled = false;
time.Interval = ;
index = ;
flag = true;
sp.Play();
time.Start();
} private void time_Tick(object sender, EventArgs e)
{
if (flag)//放大picturebox,实现转动效果
{
pictures[index].Size = new Size(, );
pictures[index].BackColor = Color.YellowGreen;
flag = false;
}
else if (flag == false)//将原来的picturebox缩放回原来的尺寸
{
pictures[index].Size = new Size(, );
pictures[index].BackColor = Color.White;
index++;
flag = true;
}
if (index == )
{
index = ;
circle -= circle > ? : ;//每次转动8次,旋转的圈数-1
}
//倒数两圈慢
time.Interval = circle > ? : ;
if (circle == && index == stopNum)
{
pictures[index].Size = new Size(, );
pictures[index].BackColor = Color.YellowGreen;
pictures[index].Location = new Point(pictures[index].Location.X - , pictures[index].Location.Y - );
StopRotate(index);
pictures[index].Size = new Size(, );
pictures[index].BackColor = Color.White;
pictures[index].Location = new Point(pictures[index].Location.X + , pictures[index].Location.Y + );
}
}
旋转代码
停止再加上一个简单的概率会有点不了不流畅。
private void StopRotate(int sum)
{
string message = null;
switch (index)
{
case : if (random.Next(, ) == stopNum) message = "恭喜获取保温杯一个"; else { circle = ; stopNum = ; } break;//1/2 14 7%
case : if (random.Next(, ) == stopNum) message = "恭喜获取体重秤一个"; else { circle = ; stopNum = ; } break;//1/3 21 4%
case : message = "谢谢惠顾"; break;
case : if (random.Next(, ) == stopNum) message = "恭喜获取台灯一个"; else { circle = ; stopNum = ; } break;//1/4 28 3%
case : if (random.Next(, ) == stopNum) message = "恭喜获取耳机一个"; else { circle = ; stopNum = ; } break;//1/4 28 3%
case : message = "谢谢惠顾"; break;
case : if (random.Next(, ) == stopNum) message = "恭喜获取电动牙刷一个"; else { circle = ; stopNum = ; } break;//1/2 1/14 7&
case : if (random.Next(, ) == stopNum) message = "恭喜获取时钟一个"; else { circle = ; stopNum = ; } break;//1/3 1/21 4%
}
if (message != null)
{
sp.Stop();
time.Stop();//先关闭定时器
MessageBox.Show(message);
this.button.Enabled = true;
}
}
停止代码
简单的旋转程序就完成了。
c#自制抽奖小程序的更多相关文章
- 用jquery实现抽奖小程序
用jquery实现抽奖小程序 这些日子,到处都可以看到关于微信小程序的新闻或报到,在博客园中写关于微信小程序的也不少.但是今天我要说的不是微信小程序,而是用简单的jquery写的一个好玩的抽奖小程序. ...
- 用 python 写一个年会抽奖小程序
使用 pyinstaller 打包工具常用参数指南 pyinstaller -F demo.py 参数 含义 -F 指定打包后只生成一个exe格式的文件 -D –onedir 创建一个目录,包含exe ...
- 抽奖小程序,js,canvas
js写的网页抽奖小程序,先上截图 源码地址:https://github.com/xiachaoxulu/raffle
- Winform 随机抽奖小程序
效果图: 主要代码: Form1.cs using System; using System.Drawing; using System.IO; using System.Runtime.Intero ...
- Excel VBA活动抽奖小程序
在活动中,我们常会有抽奖,抽奖箱准备繁琐,现在多采用线上抽奖方式,下面用Excel VBA写了一个简单的抽奖小程序 简单测试效果如下,可实现: 多次抽奖,且每次抽奖都不重复 抽奖界面滚动人员信息,点击 ...
- 自制微信小程序 提示插件 -- noticeUitis.js
/* noticeMsg.js by: FEer_llx Modify 2016/08/24 */ function weNotice(obj) { this.fadeFlag = true; thi ...
- Java抽奖小程序
package com.test; import java.awt.Color; import java.awt.Font; import java.awt.event.ActionEvent; im ...
- python——公司年会抽奖小程序
张三科技有限公司有300名员工,开年会抽奖,奖项如下一等奖3名 : 泰国五日游二等奖6名 :iphone手机三等奖30名 :避孕套一盒规则:1.一共抽3次,第一次抽3等奖,第二次抽2等奖,第三次压轴抽 ...
- 基于vs2012的C# winform抽奖小程序的总结
哈希表的使用 Hashtable hashtable = new Hashtable(); hashtable.ContainsValue(tmp);//判断哈希表中有没有tmp hashtable. ...
随机推荐
- restframework之节流
基本思路(原生Django而言): 在django2.x中,若出现节流(访问频率控制)的需求,我们首先想到的是使用一个字典(dict类型)来存储所有IP地址的访问时间记录,这是针对于匿名用户(IP)而 ...
- rsync实时同步
假设有如下需求: 假设两个服务器: 192.168.0.1 源服务器 有目录 /opt/test/ 192.168.0.2 目标服务器 有目录 /opt/bak/test/ 实现的目的就是保持这两 ...
- 剑指offer:孩子们的游戏(圆圈中最后剩下的数)
题目描述: 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机 ...
- Dictionary导致IIS CPU 100%案例分析 学会使用WinDbg工具
.NET 开发注意 线程安全性问题.弄不好可能会导致CPU满载 特别主要 Dictionary作为静态变量使用的情况. 解决方法: Dictionary 换成 ConcurrentDictiona ...
- android -------- 解决RecyclerView显示不全只显示一条item的问题
布局文件1 <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android= ...
- windows开机自动执行bat脚本
一.以windows下备份sql数据库为例,开机自动执行.bat脚本 1.新建dump.bat文件,文件中的代码如下: set YYYYmmdd=%date:~0,4%%date:~5,2%%date ...
- 【转载】 《Human-level concept learning through probabilistic program induction》阅读笔记
原文地址: https://blog.csdn.net/ln1996/article/details/78459060 --------------------- 作者:lnn_csdn 来源:CSD ...
- k8s记录-master组件部署(八)
在 192.168.0.1 app 用户下执行1)程序准备tar zxvf kubernetes-server-linux-amd64.tar.gzmv kubernetes/server/bin/{ ...
- Idea控制台中文乱码
在菜单栏找到”run->editconfigration” 找到”server”选项卡 设置 vm option为 -Dfile.encoding=utf-8
- python爬虫2
学习任务 获取去哪儿网的出发地列表 获取旅游景点列表 获取景点产品列表 存储数据 1 获取出发地站点 (1)访问touch.qunar.com (2)按F12,单击自由行,在自由行页面点击搜索框 (3 ...