用什么都可以,这个没什么关系的,在显示图片的地方,你可以假设他是一个button,也可以假设它是一个picture,或其他什么的,你要做的只是在点击上一部分时,要更新那个显示图片的控件的某个属性
解决方案 »
- C#如何让生成的文件在执行exe文件夹里
- c#中 关于AutoScroll 问题 ... 急...
- 散分+发布一个自己写的XML-RPC库
- 如何返回一个数组已赋值元素的个数
- 谁可以详细解释一下代码中经常出现在函数头的,<System.Diagnostics.DebuggerStepThrough()>;<DllImport("Kernel32.DLL", SetLastError=t
- com组建在Dispose时有时候说组件在使用中,怎么处理,怎么等待它停止?
- 急急急!按照微软的标准,我的三层结构系统中,每个数据库表都需要一个数据实体?
- 帮我看看这段发传真的代码哪里错了?
- 从键盘输入一数I,如果I=0,则显示I的值为零,否则显示I的值不为零。
- BS下WORD文档完全解决方案,感谢CSDN的朋友的帮忙
- .net技术
- vs调试asp.net出现错误,如图
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--;
public partial class Form1 : Form
{
int i=0;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//初始化
pictureBox1.Image = imageList1.Images[0];
}
//下一步
private void button2_Click(object sender, EventArgs e)
{ if (i == imageList1.Images.Count-1)
{
i = 0;
pictureBox1.Image = imageList1.Images[i];
}
else
{
i = i + 1;
pictureBox1.Image = imageList1.Images[i];
}
}
// 上一步
private void button3_Click(object sender, EventArgs e)
{
if (i == 0)
{
i = imageList1.Images.Count - 1;
pictureBox1.Image = imageList1.Images[i]; }
else
{
i = i - 1;
pictureBox1.Image = imageList1.Images[i];
}
}
}
1. 放到ImageList里,启动运行时是会占内存的,如果图片很多很大~~~~
2. ImageList里放的一般都是很小的图片,如果大图片扔进去,图片质量,大小都会被严重改造
3. 不明白为什么会想到放到ImageList里,就算说放到资源里,也比ImageList强太多
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);
}
}
}
}
换上图片所在路径么?为什么我点击之后会出现:
_ShowPic.Last(); 未将对象引用设置到对象的实例。
LZ可以在打开小窗体的时候把图片地址放入一个string数组里面
在小窗体上面放一个picturebox ,根据传过来的图片地址显示图片,根据数组中index 上一张 下一张
然后通过文件名来读取文件.显示