c#第二次作业--随机图片(目标三)

目标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();
        }
    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值