C#中,关于在一个窗口显示多张图片的问题
我想在一个窗口中,建立小的显示窗口,下面有两个按钮,“上一部分”“下一部分”,每次按按钮,出现一张图片。这个该怎么实现啊?是用panel还是用picture??谢谢大神们了,菜鸟感激不尽! --------------------编程问答-------------------- 能不能重新表述下,没看懂。 最好带上一个 想要实现什么效果的草图 --------------------编程问答-------------------- 用什么都可以,这个没什么关系的,在显示图片的地方,你可以假设他是一个button,也可以假设它是一个picture,或其他什么的,你要做的只是在点击上一部分时,要更新那个显示图片的控件的某个属性 --------------------编程问答--------------------
用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--;
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];
}
}
} --------------------编程问答-------------------- 千万别听楼上两位说的,把图片放到ImageList:
1. 放到ImageList里,启动运行时是会占内存的,如果图片很多很大~~~~
2. ImageList里放的一般都是很小的图片,如果大图片扔进去,图片质量,大小都会被严重改造
3. 不明白为什么会想到放到ImageList里,就算说放到资源里,也比ImageList强太多 --------------------编程问答--------------------
imageList 控件是不是要先拖到界面中啊?但是我试了一下,拖不进去 --------------------编程问答--------------------
[img=http://b102.photo.store.qq.com/psb?/V10U5OhB09TBR0/ul.sk97egVUhmqo8TsWn8CTR7ni6qliD*Pb4iLDDth4!/b/YWK41jz9NAAAYrKa0zxtNQAA][/img]
--------------------编程问答--------------------
大神可否贴些代码?? --------------------编程问答-------------------- 上班先 --------------------编程问答--------------------
using System;--------------------编程问答-------------------- ceshi网络测试yyyyyyyyyyyyyyyyyyyyyy! --------------------编程问答-------------------- 大牛能解释下,为什么imglist会占用很大的内存,而且会把图片质量拉下来? --------------------编程问答-------------------- 不解释 --------------------编程问答-------------------- 是在 _ShowPic.Load(@"F:\Files\相片\2", SearchOption.TopDirectoryOnly);
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 上一张 下一张
--------------------编程问答--------------------
我也是这个情况,请问怎么解决啊?
补充:.NET技术 , C#