c#作业第二期第二弹(图片查看器)

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 JpgReader
{


    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        static public int w = 0;                               //数组的下标
        static public string peth = null;
        static public string path = null;
        static public string[] k = null;                     //存放文件路径的数组
        static public int FileCount = 0;                  //统计文件个数


                     
        private void pictureBox1_Click(object sender, EventArgs e)
        {
         
        }

        private void button1_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog Img = new OpenFileDialog())
            {
                Img.Title = "选择图片";
                Img.InitialDirectory = "";
                Img.Filter = "图片文件|*.bmp;*.jpg;*.jpeg;*.gif;*.png";
                Img.FilterIndex = 1;
            

                if (Img.ShowDialog() == DialogResult.OK)
                {
                    string temp = @"\" + Img.SafeFileName;        //文件名加斜杠
                    path = Img.FileName.Replace(temp,"");
                    peth = path;                                                   //文件所在文件夹路径
                   
                     
                    pictureBox1.Image = Image.FromFile(Img.FileName);      


                }
                k = Directory.GetFiles(peth);                                              //存放文件路径的数组
                for (int i = 0; i < k.Length; i++) {                                        //给w赋初值
                    if(Img.FileName==k[i]){
                        w = i;
                    }
                }

                DirectoryInfo Dir = new DirectoryInfo(peth);                      
                foreach (FileInfo FI in Dir.GetFiles())                                                 //统计各种格式的图片文件个数
                {
                    if (System.IO.Path.GetExtension(FI.Name) == ".jpg")
                    {
                        FileCount++;
                     }
                    else if (System.IO.Path.GetExtension(FI.Name) == ".gif")
                    {
                        FileCount++;
                    }
                    else if (System.IO.Path.GetExtension(FI.Name) == ".bmp")
                    {
                        FileCount++;
                    }
                    else if (System.IO.Path.GetExtension(FI.Name) == ".jpeg")
                    {
                        FileCount++;
                    }
                    else if (System.IO.Path.GetExtension(FI.Name) == ".png")
                    {
                        FileCount++;
                    }
                }
            }
        }
        int index = 0;
        private void LastPicture_Click(object sender, EventArgs e)
        {
           --w;
            if(w<0){
                w = FileCount-1;                                             //数组下标要减一
            }
            try
            {
                pictureBox1.Image = Image.FromFile(k[w]);                          //显示图片
                peth = path;                                                                        
            }
            catch (Exception)
            {
                MessageBox.Show("Error!");            
            }
        }

        private void NextPicture_Click(object sender, EventArgs e)
        { 
            w++;
            if(w>(FileCount-1))
            {
                w=0 ;                                                            //超出文件夹内文件的个数则下标归零
            }
            try
            {
                pictureBox1.Image = Image.FromFile(k[w]);                  
                peth = path;
            }
            catch(Exception)
            {
                MessageBox.Show("Error!");
            }
        }
    }
}

咳咳,我又来了。。。这次做了个更加水的东西,求各位大神勿喷。

总之老师的题目要求是:目标2的功能简介:有5张图片(编号分别为1.jpg,2.jpg,……,5.jpg),窗体有3个控件(PictureBox,2个按钮);窗体刚开始显示”1.jpg“,按”上一张“则显示”5.jpg“(循环显示),按”下一张“则显示”2.jpg“,依此类推。

于是我在想,这东西做出来有意思吗?就5张图片?就只能读取指定目录?

然后我就改造了一下,能读取任意一个文件夹的图片文件,相当于照片查看器一样的东西。

大家从上面的代码可以看见,这东西很简单,那么,我们先来看一下效果吧:


很明显这是个界面,choose按钮就是让你选择要打开的文件,Last和Next就是给你看看你到底是想要看上一张还是下一张的。

按下choose:


咳咳,我是个枪迷,谢谢……

好了,看一下效果吧:


咳咳,修改了一下,吧pictureBox的sizemode属性调为zoom就可以完全显示图片了,这就是真真正正的照片查看器了。

解释一下代码是怎么实现的:


这里呢,是Choose按钮的代码,其实很简单,这里只是设置一下弹出的打开文件的对话框需要选择什么而已。

接下来就是:

这里呢,temp是文件名加上一个斜杠,@是用于显示所有转义字符的。

pictureBox1.Image = Image.FromFile(Img.FileName);是用于显示图片的。


这里呢,是用于读取有多少个文件的,并且选择图片后对应文件的下标值赋给w,赋给w之后呢,w用于:


很明显,作为一个下标嘛,用于控制按钮点击的作用的,其中如果是Last按钮的话,超出最前的照片后会自动跳到最后一张照片去,FileCount是用于保存文件个数的一个整形变量,它的实现是:


就是读取jpg、gif等格式的文件后统计并累加起来,这样FileCount就可以统计有多少个图片文件了,同时,由于多少个是从1开始的,所以w应该以FileCount作为下标。

这个地方

Directory.GetFiles(peth);这个方法是读取文件的存放路径并存储在数组k中,

k和下标w就能实现读取哪张图片了。

总之这个东西可以当照片查看器使用,可以随便读取你某个文件夹中的所有图片,好了,就是这样,吹水结束~微笑




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值