[原创]winform_PC宴会图片抽奖/文字抽奖

14年6月 好友结婚

14年4月左右知道他们婚礼由迎宾照抽奖的环节

问我有没有可以用的抽奖软件

我网上找了一会儿,就放弃了,自己做一个更快不是?

14年6月,PC宴会图片抽奖软件成功使用

---

操作示意图:

图片文字模式2选1

1.文字模式只需要指定txt文本文件路劲

会按序滚动txt文本文件内容进行抽奖

2.图片模式需要设定

清晰图片文件夹

缩略图文件夹

缩略倍数

后,生成缩略图即可

---

部分代码:

main.cs

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.IO;
  7 using System.Linq;
  8 using System.Text;
  9 using System.Windows.Forms;
 10 using System.Threading;
 11 
 12 namespace partyGifts
 13 {
 14     public partial class Main : Form
 15     {
 16         public Main()
 17         {
 18             InitializeComponent();
 19         }
 20 
 21         private void Main_Load(object sender, EventArgs e)
 22         {
 23             this.cbType.SelectedIndex = 0;
 24         }
 25 
 26         private void cbType_SelectedIndexChanged(object sender, EventArgs e)
 27         {
 28             if (this.cbType.SelectedItem.ToString().Equals("图片"))
 29             {
 30                 this.btnSource.Text = "图片文件夹(不含子目录)";
 31                 parms.type = "图片";
 32                 parms.path = "";
 33             }
 34             else if (this.cbType.SelectedItem.ToString().Equals("文字"))
 35             {
 36                 this.btnSource.Text = "文字文件(*.txt)";
 37                 parms.type = "文字";
 38                 parms.path = "";
 39             }
 40         }
 41 
 42         private void btnSource_Click(object sender, EventArgs e)
 43         {
 44             if (this.cbType.SelectedItem.ToString().Equals("图片"))
 45             {
 46                 FolderBrowserDialog fbd = new FolderBrowserDialog();
 47                 if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
 48                 {
 49                     this.lblSource.Text = fbd.SelectedPath;
 50                     parms.path = fbd.SelectedPath;
 51                 }
 52             }
 53             else if (this.cbType.SelectedItem.ToString().Equals("文字"))
 54             {
 55                 OpenFileDialog ofd = new OpenFileDialog();
 56                 ofd.Filter = "文本文件(*.txt)|*.txt";
 57                 ofd.Multiselect = false;
 58                 if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
 59                 {
 60                     this.lblSource.Text = ofd.FileName;
 61                     parms.path = ofd.FileName;
 62                 }
 63             }
 64         }
 65 
 66         private void btnBgColor_Click(object sender, EventArgs e)
 67         {
 68             ColorDialog cd = new ColorDialog();
 69             cd.FullOpen = true;
 70             if (cd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
 71             {
 72                 this.btnBgColor.BackColor = cd.Color;
 73                 parms.bgColor = cd.Color;
 74             }
 75         }
 76 
 77         private void btnFontColor_Click(object sender, EventArgs e)
 78         {
 79             ColorDialog cd = new ColorDialog();
 80             cd.FullOpen = true;
 81             if (cd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
 82             {
 83                 this.btnFontColor.BackColor = cd.Color;
 84                 parms.fontColor = cd.Color;
 85             }
 86         }
 87 
 88         private void numTime_ValueChanged(object sender, EventArgs e)
 89         {
 90             parms.timeNum = (int)this.numTime.Value;
 91         }
 92 
 93         private void btnStart_Click(object sender, EventArgs e)
 94         {
 95             if (!parms.path.Equals(""))
 96             {
 97                 gifts g = new gifts();
 98                 g.Show();
 99             }
100             else
101             {
102                 MessageBox.Show("请选择数据来源!");
103             }
104         }
105 
106         private void txtFTxt_TextChanged(object sender, EventArgs e)
107         {
108             parms.firstTxt = this.txtFTxt.Text;
109         }
110 
111         private void btnFPic_Click(object sender, EventArgs e)
112         {
113             OpenFileDialog ofd = new OpenFileDialog();
114             ofd.Filter = "图片文件(*.jpg,*.jpeg,*.gif,*.bmp,*.png)|*.jpg;*.jpeg;*.gif;*.bmp;*.png";
115             ofd.Multiselect = false;
116             if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
117             {
118                 this.lblFPic.Text = ofd.FileName;
119                 parms.firstPicUrl = ofd.FileName;
120             }
121             else
122             {
123                 this.lblFPic.Text = "";
124                 parms.firstPicUrl = "";
125             }
126         }
127 
128         private void cb1_CheckedChanged(object sender, EventArgs e)
129         {
130             parms.cb1 = this.cb1.Checked;
131         }
132 
133         private void btnSlPath_Click(object sender, EventArgs e)
134         {
135             FolderBrowserDialog fbd = new FolderBrowserDialog();
136             if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
137             {
138                 this.lblSl.Text = fbd.SelectedPath;
139                 parms.thumbPath = fbd.SelectedPath;
140             }
141             else
142             {
143                 this.lblSl.Text = "";
144                 parms.thumbPath = "";
145             }
146         }
147 
148         private void btnDoSl_Click(object sender, EventArgs e)
149         {
150             MessageBoxButtons messButton = MessageBoxButtons.OKCancel;
151             DialogResult dr = MessageBox.Show("该处理会删除缩略图文件夹后重新生成文件夹
是否继续?", "提示信息", messButton);
152             if (dr == DialogResult.OK)
153             {
154                 if (new DirectoryInfo(parms.thumbPath).Exists)
155                 {
156                     foreach (FileInfo item in new DirectoryInfo(parms.thumbPath).GetFiles())
157                     {
158                         item.Delete();
159                     }
160                 }
161                 
162                 if (parms.path != "" && parms.type == "图片")
163                 {
164                     DirectoryInfo di = new DirectoryInfo(parms.path);
165                     FileInfo[] fiLst = di.GetFiles();
166                     foreach (FileInfo fi in fiLst)
167                     {
168                         parms.MakeThumbnail(fi.FullName, parms.thumbPath + "\" + fi.Name, System.Windows.Forms.SystemInformation.VirtualScreen.Width / (int)numBS.Value, System.Windows.Forms.SystemInformation.VirtualScreen.Height / (int)numBS.Value, "W");
169                     }
170                     MessageBox.Show("缩略图生成完成,请继续操作");
171                 }
172                 else
173                 {
174                     MessageBox.Show("请选择图片模式,且填写完图片文件夹路径");
175                 }
176             }
177         }
178     }
179 }

gifts.cs

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Linq;
  7 using System.Text;
  8 using System.Windows.Forms;
  9 using System.IO;
 10 using System.Runtime.InteropServices;
 11 
 12 namespace partyGifts
 13 {
 14     public partial class gifts : Form
 15     {
 16 
 17         [DllImport("user32.dll", EntryPoint = "ShowCursor", CharSet = CharSet.Auto)]
 18         public extern static void ShowCursor(int status);
 19 
 20         public gifts()
 21         {
 22             InitializeComponent();
 23         }
 24 
 25         private Timer timer = new Timer();
 26 
 27         private void gifts_KeyUp(object sender, KeyEventArgs e)
 28         {
 29             switch (e.KeyData)
 30             {
 31                 case Keys.Escape:
 32                     timer.Stop();
 33                     parms.txtList.Clear();
 34                     this.Close();
 35                     return;
 36                 case Keys.Space:
 37                     parms.playSts = !parms.playSts;
 38                     if (!parms.playSts)
 39                     {
 40                         if (parms.type.Equals("图片") && parms.cb1)
 41                         {
 42                             timer.Stop();
 43                             this.lblFont.Visible = false;
 44                             this.picBox.ImageLocation = parms.txtList[selectIndex];
 45                             this.picBox.Refresh();
 46                         }
 47                         else if (parms.type.Equals("图片") && parms.thumbPath != "")
 48                         {
 49                             this.picBox.ImageLocation = parms.path + "\" + this.imgNameAllLst[selectIndex];
 50                         }
 51                     }
 52                     else { 
 53                         if (parms.type.Equals("图片") && parms.cb1)
 54                         {
 55                             timer.Stop();
 56                             this.lblFont.Visible = false;
 57                         }
 58                     }
 59                     break;
 60                 default: break;
 61             }
 62             goOn();
 63         }
 64 
 65         private void goOn()
 66         {
 67             if (parms.playSts)
 68             {
 69                 //getOut
 70                 if (-1 != selectIndex)
 71                 {
 72                     parms.txtList.RemoveAt(selectIndex);
 73                     if (parms.type.Equals("图片"))
 74                     {
 75                         imgNameLst.RemoveAt(selectIndex);
 76                         imgNameAllLst.RemoveAt(selectIndex);
 77                     }
 78                     if (0 == parms.txtList.Count)
 79                     {
 80                         timer.Stop();
 81                         parms.txtList.Clear();
 82                         MessageBox.Show("全部中奖,抽奖结束");
 83                         this.Close();
 84                         return;
 85                     }
 86                     if (0 != selectIndex)
 87                     {
 88                         selectIndex--;
 89                     }
 90                     else
 91                     {
 92                         selectIndex = parms.txtList.Count;
 93                     }
 94                 }
 95                 else
 96                 {
 97                     if (parms.type.Equals("图片"))
 98                         this.picBox.Visible = true;
 99                     if (parms.type.Equals("图片") && parms.cb1)
100                     {
101                         this.picBox.Controls.Add(this.lblFont);
102                     }
103                 }
104                 timer.Start();
105             }
106             else
107             {
108                 timer.Stop();
109             }
110         }
111         private Label lblFont = new Label();
112         private void gifts_Load(object sender, EventArgs e)
113         {
114             timer.Interval = parms.timeNum;
115             timer.Tick += timer_Tick;
116             lblFont.ForeColor = parms.fontColor;
117             this.BackColor = parms.bgColor;
118             lblFont.Font = new Font(lblFont.Font, FontStyle.Bold);
119             lblFont.Font = new Font(this.Font.FontFamily, 150);
120             lblFont.BackColor = Color.Transparent;
121             lblFont.Size = new Size(this.Width, this.Height);
122             lblFont.Top = 0;
123             lblFont.Left = 0;
124             lblFont.Text = parms.firstTxt;
125             lblFont.TextAlign = ContentAlignment.MiddleCenter;
126 
127             this.picBox.Left = 0;
128             this.picBox.Top = 0;
129             this.picBox.Size = new Size(this.Width, this.Height);
130 
131             if (!parms.firstPicUrl.Equals(string.Empty))
132             {
133                 //lblFont.Image = new Bitmap(parms.firstPicUrl);
134                 //this.lblFont.Visible = false;
135                 this.picBox.Visible = true;
136                 this.picBox.ImageLocation = parms.firstPicUrl;
137                 this.picBox.Controls.Add(lblFont);
138             }
139             else
140             {
141                 this.picBox.Visible = false;
142                 this.Controls.Add(lblFont);
143             }
144             if (parms.type.Equals("文字"))
145             {
146                 StreamReader sr = new StreamReader(new FileStream(parms.path, FileMode.Open), Encoding.UTF8);
147                 string lstTmp = sr.ReadLine();
148                 while (lstTmp != null)
149                 {
150                     parms.txtList.Add(lstTmp);
151                     lstTmp = sr.ReadLine();
152                 }
153             }
154             else
155             {
156                 DirectoryInfo di;
157                 if (parms.thumbPath != "")
158                 {
159                     di = new DirectoryInfo(parms.thumbPath);
160                 }
161                 else
162                 {
163                     di = new DirectoryInfo(parms.path);
164                 }
165                 FileInfo[] fiLst = di.GetFiles();
166                 foreach (FileInfo fi in fiLst)
167                 {
168                     parms.txtList.Add(fi.FullName);
169                     imgNameLst.Add(fi.Name.Replace(fi.Extension, ""));
170                     imgNameAllLst.Add(fi.Name);
171                 }
172                 //if (parms.firstPicUrl.Equals(string.Empty) && !parms.cb1)
173                     //this.picBox.InitialImage = new Bitmap(parms.txtList[0]);
174             }
175             ShowCursor(0);
176         }
177         private List<string> imgNameLst = new List<string>();
178         private List<string> imgNameAllLst = new List<string>();
179         private int selectIndex = -1;
180         void timer_Tick(object sender, EventArgs e)
181         {
182             selectIndex = ++selectIndex % parms.txtList.Count;
183             if (parms.type.Equals("文字"))
184             {
185                 this.lblFont.Text = parms.txtList[selectIndex];
186             }
187             else
188             {
189                 this.lblFont.Visible = false;
190                 if (!parms.cb1)
191                 {
192                     this.picBox.ImageLocation = parms.txtList[selectIndex];
193                 }
194                 else
195                 {
196                     this.picBox.Image = null;
197                     this.lblFont.Visible = true;
198                     this.lblFont.Text = this.imgNameLst[selectIndex];
199                 }
200                 //this.picBox.Image = imgLst[selectIndex];
201             }
202         }
203 
204         private void gifts_FormClosing(object sender, FormClosingEventArgs e)
205         {
206             parms.playSts = false;
207             //this.picBox.InitialImage.Dispose();
208             this.picBox.Dispose();
209             ShowCursor(1);
210         }
211 
212     }
213 }

parms.cs

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Drawing;
  4 using System.Linq;
  5 using System.Text;
  6 
  7 namespace partyGifts
  8 {
  9     public class parms
 10     {
 11         public static string path = "";
 12         public static string type = "";
 13         public static int timeNum = 150;
 14         public static Color bgColor;
 15         public static Color fontColor;
 16         public static List<string> txtList = new List<string>();
 17         public static bool playSts = false;
 18         public static string firstTxt = "尽请期待";
 19         public static string firstPicUrl = string.Empty;
 20         public static bool cb1 = false;
 21         public static string thumbPath = "";
 22 
 23         /**/
 24         /// <summary> 
 25         /// 生成缩略图 
 26         /// </summary> 
 27         /// <param name="originalImagePath">源图路径(物理路径)</param> 
 28         /// <param name="thumbnailPath">缩略图路径(物理路径)</param> 
 29         /// <param name="width">缩略图宽度</param> 
 30         /// <param name="height">缩略图高度</param> 
 31         /// <param name="mode">生成缩略图的方式</param>     
 32         public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
 33         {
 34             Image originalImage = Image.FromFile(originalImagePath);
 35 
 36             int towidth = width;
 37             int toheight = height;
 38 
 39             int x = 0;
 40             int y = 0;
 41             int ow = originalImage.Width;
 42             int oh = originalImage.Height;
 43 
 44             switch (mode)
 45             {
 46                 case "HW"://指定高宽缩放(可能变形)                 
 47                     break;
 48                 case "W"://指定宽,高按比例                     
 49                     toheight = originalImage.Height * width / originalImage.Width;
 50                     break;
 51                 case "H"://指定高,宽按比例 
 52                     towidth = originalImage.Width * height / originalImage.Height;
 53                     break;
 54                 case "Cut"://指定高宽裁减(不变形)                 
 55                     if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
 56                     {
 57                         oh = originalImage.Height;
 58                         ow = originalImage.Height * towidth / toheight;
 59                         y = 0;
 60                         x = (originalImage.Width - ow) / 2;
 61                     }
 62                     else
 63                     {
 64                         ow = originalImage.Width;
 65                         oh = originalImage.Width * height / towidth;
 66                         x = 0;
 67                         y = (originalImage.Height - oh) / 2;
 68                     }
 69                     break;
 70                 default:
 71                     break;
 72             }
 73 
 74             //新建一个bmp图片 
 75             Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
 76 
 77             //新建一个画板 
 78             Graphics g = System.Drawing.Graphics.FromImage(bitmap);
 79 
 80             //设置高质量插值法 
 81             g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
 82 
 83             //设置高质量,低速度呈现平滑程度 
 84             g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
 85 
 86             //清空画布并以透明背景色填充 
 87             g.Clear(Color.Transparent);
 88 
 89             //在指定位置并且按指定大小绘制原图片的指定部分 
 90             g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),
 91                 new Rectangle(x, y, ow, oh),
 92                 GraphicsUnit.Pixel);
 93 
 94             try
 95             {
 96                 //以jpg格式保存缩略图 
 97                 bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
 98             }
 99             catch (System.Exception e)
100             {
101                 throw e;
102             }
103             finally
104             {
105                 originalImage.Dispose();
106                 bitmap.Dispose();
107                 g.Dispose();
108             }
109         }
110 
111     }
112 }

---

CSDN代码及程序下载:

 http://download.csdn.net/detail/wangxsh42/8391929

使用者:下载后,可以直接使用:

partyGiftsinDebugpartyGifts.exe

原文地址:https://www.cnblogs.com/wangxinsheng/p/4245426.html