目标3:“随机图片显示器”开发,并记录自程序运行后每张图片已经显示的次数,把次数保存到文本文件中(100分)。
目标3的功能简介:有若干张图片(自己确定,不少于5张,命名方法自定),窗体有3个控件(PictureBox,按钮,label);按下”随机显示“按钮,则随机显示一张图片,并给出该图片显示的次数在右边的label中;同时在”关闭“窗体时,把每张图片目前已经显示的次数写入到指定文件中,方便下次程序运行时使用。
使用方法,只需要把图片(不少于五张,最多可以20张(修改参数就可以无限增加))放到指定文件夹,就能使用该程序了,代码实现了图片的随机显示,当关闭程序的时候就会输出到1.txt这个文件里,当下次使用的时候,之前累计的次数会继续累加下去。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace PictureShowDemo
{
public partial class frmDemo : Form
{
private String[] strs = Directory.GetFiles("F:\\Sam\\素材\\随机图片");
//获取图片文件夹
private String[] temp = new String[20];
//定义最多可以有20张图片
private String[] a = null;
private Random rand=new Random();
//随机函数
private int randKey=0;
private int n = 0;
private String[] ss=null;
public int[] record=null;
public frmDemo()
{
InitializeComponent();
path();
//在指定路径获取.jpg或者.bmg的图片文件
StreamReader rd = File.OpenText("F:\\Sam\\素材\\随机图片\\1.txt");
//获取记录文件
String s = rd.ReadLine();
//读取之前的记录
ss = s.Split(' ');
//分割流
record = new int[n];
//根据图片个数定义数组
for (int i = 0; i < n; i++)
{
if (i < ss.Length)
{
record[i] = Convert.ToInt32(ss[i]);
//查看记录文件,获取之前的记录
}
else
{
record[i] = 0;
//当图片个数多于记录个数时,把这个图片的累积次数初始化为0
}
}
rd.Close();
//关闭流
}
private void path()
{
try
{
foreach (String file in strs)
//在图片文件夹路径中寻找
{
FileInfo fi = new FileInfo(file);
if (fi.Extension == ".jpg" || fi.Extension == ".bmp")
//当后缀名为.jpg或.bmp时增加一个图片路径
{
temp[n] = string.Copy(fi.FullName);
//记录符合要求的图片路径
n++;
//记录图片个数
}
};
}
catch (System.NullReferenceException)
{
}
//a = new String[n];
//for (int i = 0; i < n; i++)
//{
// a[i] = string.Copy(temp[i]);
//}
}
private void label1_Click(object sender, EventArgs e)
{
}
private void ptbShow_Click(object sender, EventArgs e)
{
}
private void btnRand_Click(object sender, EventArgs e)
{
randKey = rand.Next(0, n);
//在图片堆中随机显示一个图片
try
{
ptbShow.Image=Image.FromFile(@temp[randKey]);
record[randKey]++;
lblShow.Text = "显示次数:" + record[randKey].ToString();
}
catch (System.IO.FileNotFoundException)
{
}
}
private void frmclose(object sender, FormClosedEventArgs e)
{
//关闭程序时把累积的记录输出到记录文件里
StreamWriter sw = new StreamWriter("F:\\Sam\\素材\\随机图片\\1.txt");
for (int i = 0; i < record.Length; i++)
{
if (i == record.Length - 1)
{
sw.Write(record[i]);
}
else
{
sw.Write(record[i] + " ");
}
}
sw.Close();
}
}
}