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就能实现读取哪张图片了。
总之这个东西可以当照片查看器使用,可以随便读取你某个文件夹中的所有图片,好了,就是这样,吹水结束~