110,534
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Threading;
namespace WindowsFormsApplication1
{
/// <summary>
/// 改变图片委托,我又滥用委托了
/// </summary>
/// <param name="message"></param>
public delegate void ChangeImageHandler(String message);
public partial class Form1 : Form
{
private ShowPic _ShowPic;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
_ShowPic = new ShowPic(pictureBox1);
_ShowPic.ChangeImage += new ChangeImageHandler(ChangeImage);
_ShowPic.Load(@"F:\Files\相片\2", SearchOption.TopDirectoryOnly);
}
private void button1_Click(object sender, EventArgs e)
{
// 显示上一张图片
_ShowPic.Last();
}
private void button2_Click(object sender, EventArgs e)
{
// 显示下一张图片
_ShowPic.Next();
}
private void ChangeImage(String message)
{
// 改变图片事件
this.Text = message;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (_ShowPic != null)
{
_ShowPic = null;
}
}
}
/// <summary>
/// 显示图片类
/// </summary>
public sealed class ShowPic
{
/// <summary>
/// 改变图片事件,我又滥用事件了
/// </summary>
public event ChangeImageHandler ChangeImage;
/// <summary>
/// 图片列表
/// </summary>
private String[] _ArrPicPath;
/// <summary>
/// 图片索引值
/// </summary>
private Int32 _Index;
/// <summary>
/// 要显示图片的PictureBox控件
/// </summary>
private PictureBox _PictureBox;
/// <summary>
/// 改变图片事件触发函数
/// </summary>
/// <param name="message"></param>
private void OnChangeImage(String message)
{
ChangeImageHandler temp = Interlocked.CompareExchange<ChangeImageHandler>(ref ChangeImage, null, null);
if (temp != null)
{
temp(message);
}
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="pictureBox">PictureBox控件</param>
public ShowPic(PictureBox pictureBox)
{
_PictureBox = pictureBox;
_Index = 0;
}
/// <summary>
/// 加载图片
/// </summary>
/// <param name="path">文件夹路径</param>
/// <param name="searchOption">搜索参数</param>
public void Load(String path, SearchOption searchOption)
{
if (!Directory.Exists(path))
{
OnChangeImage(path + " 路径不存在");
throw new DirectoryNotFoundException(path + " 路径不存在");
}
// 获取文件夹下所有图片
_ArrPicPath = System.IO.Directory.GetFiles(path,"*.jpg", searchOption);
// 加载第一步图片
LoadImage();
}
/// <summary>
/// 上一张
/// </summary>
public void Last()
{
lock (_ArrPicPath)
{
if (_Index > 0)
{
_Index--;
}
else
{
OnChangeImage("已经是第一张");
return;
}
}
LoadImage();
}
/// <summary>
/// 下一张
/// </summary>
public void Next()
{
lock (_ArrPicPath)
{
if (_Index < _ArrPicPath.Length - 1)
{
_Index++;
}
else
{
OnChangeImage("已经是最后一张");
return;
}
}
LoadImage();
}
/// <summary>
/// 加载图片到PictureBox
/// </summary>
private void LoadImage()
{
if (_ArrPicPath == null || _ArrPicPath.Length <= 0)
{
OnChangeImage("没有图片");
return;
}
String path = _ArrPicPath[_Index];
if (File.Exists(path))
{
_PictureBox.Load(path);
OnChangeImage(path);
}
}
}
}
用Imagelist控件存放图片
int j=0;
下一部分按钮事件
if (j == imageList1.Images.Count)
{
j = 0;
}
pictureBox1.Image = imageList1.Images[j];
j++;
下一部分按钮事件
if (j ==0)
{
j = imageList1.Images.Count-1;
}
pictureBox1.Image = imageList1.Images[j];
j--;