返回首页
当前位置: 主页 > 网络编程 > .Net实例教程 >

C# 编写公司年会照片抽奖程序代码

时间:2016-10-16 20:01来源:2018年最新注册送彩金www.zhixing123.cn 编辑:麦田守望者

貌似好久没有写文章了,一是忙,再是一直再玩Dota2和剑灵还有炉石,嘿嘿。。
每年公司年会总会举行一些活动,当然也包括抽奖游戏,今年我们公司也不例外
于是想找一个用照片随机抽奖的小软件,网上也找了好多,几乎都收费,而且是异常的贵。

那么只有自己写了,首先要确定软件需求,其实开发这个最重要的难点是开发语言选择,我自己本身是学习java的,开发这个考虑过易语言或者网页js 或者PPT还有win8 metro,不过最后还是选择了C#,这貌似是第一次接触C#语言,从开发理论上,应该和java没多大,区别,当然遇到 不会的问题只有请教做C#的朋友或者查询百度咯….

C# 编写公司年会照片抽奖程序代码
 

软件需求
◾1、可以读取固定文件夹里的图片,然后快速随机显示,这样可以为以后添加照片和成员方便
◾2、刚刚打开有一个开始按钮,点击后,开始,按钮消失
◾3、回车键、鼠标单击任意位置,可以暂停图片随机显示和开始图片随机显示
◾4、点击开始按钮播放抽奖音乐、鼠标点击暂停后,播放某人中奖时的欢呼音乐、所有人员抽奖完毕播放音乐
◾5、可以随时更换音乐名称
◾6、F11 全屏显示
◾7、A键 显示所有中奖人员
◾8、被抽中人员的照片不再参与抽奖,抽中后,将该照片从image文件夹移动到winne文件夹
◾9、当image文件夹为空时,提示“所有人都已经中奖”
◾10、当winner文件为空时,提示“还没有人中奖”
◾11、背景图片可以自定义

遇到难题
◾1、文件读取和随机
这个应该很多学开发的都会,经典的random方法

System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(Application.StartupPath + "\\image\\");
FileInfo[] ff = di.GetFiles("*.jpg");
Random random = new Random();//随机
int a = random.Next(0, ff.Length);

 


System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(Application.StartupPath + "\\image\\");
FileInfo[] ff = di.GetFiles("*.jpg");
Random random = new Random();//随机
int a = random.Next(0, ff.Length);



◾2、随机切换图片
这个地方需要定义一个timer1_Tick,重复循环执行随机随机方法和图片显示的方法

private void timer1_Tick(object sender, EventArgs e)
{
displaypicture();
}

 


private void timer1_Tick(object sender, EventArgs e)
{
displaypicture();
}



◾3、中奖图片的移动,包括复制存在判断、删除正在使用的图片
这个地方主要遇到的问题是如果图片MoveTo话会提示文件正在被使用,所以最后想到了先CopyTo到指定文件夹,然后再删除,不过拷贝到指定文件夹时,如果被复制的文件已经存在,也会报错,所以加一个文件存在判断并删除已经存在的文件

if (File.Exists(Application.StartupPath + "\\winner\\" + flInfo.ToString()))//fiInfo 是前面随机到的文件ff[a]
{
new FileInfo(Application.StartupPath + "\\winner\\" + flInfo.ToString()).Delete();
}
flInfo.CopyTo(Application.StartupPath + "\\winner\\" + flInfo.ToString());
File.Delete(Application.StartupPath + "\\image\\" + flInfo.ToString());//移动后删除
}

 


if (File.Exists(Application.StartupPath + "\\winner\\" + flInfo.ToString()))//fiInfo 是前面随机到的文件ff[a]
{
new FileInfo(Application.StartupPath + "\\winner\\" + flInfo.ToString()).Delete();
}
flInfo.CopyTo(Application.StartupPath + "\\winner\\" + flInfo.ToString());
File.Delete(Application.StartupPath + "\\image\\" + flInfo.ToString());//移动后删除
}



图片不能随便执行Delete()方法的,所以要将显示的图片加到Memory里

//把文件写入memory,方便删除文件
flInfo = ff[a];
FileStream fs = new FileStream(Application.StartupPath + "\\image\\" + flInfo.ToString(), FileMode.Open, FileAccess.Read, FileShare.Read);
BinaryReader br = new BinaryReader(fs);
MemoryStream ms = new MemoryStream(br.ReadBytes((int)fs.Length));
pictureBox1.Image = Image.FromStream(ms);
pictureBox1.SizeMode = PictureBoxSizeMode.CenterImage;
fs.Close();

 


//把文件写入memory,方便删除文件
flInfo = ff[a];
FileStream fs = new FileStream(Application.StartupPath + "\\image\\" + flInfo.ToString(), FileMode.Open, FileAccess.Read, FileShare.Read);
BinaryReader br = new BinaryReader(fs);
MemoryStream ms = new MemoryStream(br.ReadBytes((int)fs.Length));
pictureBox1.Image = Image.FromStream(ms);
pictureBox1.SizeMode = PictureBoxSizeMode.CenterImage;
fs.Close();



◾4、C#插入音乐方法

/// <summary>
/// MIC 多媒体数据接口初始化
/// </summary>
public static uint SND_ASYNC = 0x0001; // play asynchronously
public static uint SND_FILENAME = 0x00020000; // name is file name
[DllImport("winmm.dll")]
public static extern uint mciSendString(string lpstrCommand,
string lpstrReturnString, uint uReturnLength, uint hWndCallback);
//音乐使用
mciSendString(@"close temp_alias", null, 0, 0);
mciSendString(@"open ""bv.mp3"" alias temp_alias",null, 0, 0);
mciSendString("play temp_alias repeat", null, 0, 0);

 

/// <summary>
/// MIC 多媒体数据接口初始化
/// </summary>
public static uint SND_ASYNC = 0x0001; // play asynchronously
public static uint SND_FILENAME = 0x00020000; // name is file name
[DllImport("winmm.dll")]
public static extern uint mciSendString(string lpstrCommand,
string lpstrReturnString, uint uReturnLength, uint hWndCallback);
//音乐使用
mciSendString(@"close temp_alias", null, 0, 0);
mciSendString(@"open ""bv.mp3"" alias temp_alias",null, 0, 0);
mciSendString("play temp_alias repeat", null, 0, 0);



◾5、中奖人员列表显示,独立窗口并且去掉扩展名

private void win_Load(object sender, EventArgs e)
{
for (int i = 0; i < fl.Length; i++)//数组循环
{
string str = fl[i].ToString();
string[] s = str.Split('.');//去掉扩展名
label1.Text += s[0]+"\n";
}
}

 


private void win_Load(object sender, EventArgs e)
{
for (int i = 0; i < fl.Length; i++)//数组循环
{
string str = fl[i].ToString();
string[] s = str.Split('.');//去掉扩展名
label1.Text += s[0]+"\n";
}
}


下载地址:http://download.csdn.net/detail/jalycn/6762601

顶一下
(0)
0%
踩一下
(0)
0%
标签(Tag):C#
------分隔线----------------------------
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
博聚网