PictureBox的内存问题
Posted 乐在跑途
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PictureBox的内存问题相关的知识,希望对你有一定的参考价值。
1、PictureBox类
表示用于显示图像的 Windows 图片框控件,通常使用 PictureBox 来显示位图、元文件、图标、JPEG、GIF 或 PNG 文件中的图形。
—MSDN
2、PictureBox控件的使用
工具箱中的公共控件中托出PictureBox控件
设置SizeMode属性—枚举类型
PictureBox.Image获得图片的路径:三种方法
1.绝对路径:
this.pictureBox2.Image=Image.FromFile("D:\\001.jpg");
2.相对路径:
Application.StartupPath;
可以得到程序根目录
this.pictureBox2.Image=Image.FromFile(Application.StartupPath "\\1.gif");
3.获得网络图片的路径
this.pictureBox2.Image= Image.FromStream(System.Net.WebRequest.Create(http://www.pxkt.com/logo.gif).GetResponse().GetResponseStream());
this.pictureBox2.Image=Image.FromFile("D:\\001.jpg");
2.相对路径:
Application.StartupPath;
可以得到程序根目录
this.pictureBox2.Image=Image.FromFile(Application.StartupPath "\\1.gif");
3.获得网络图片的路径
this.pictureBox2.Image= Image.FromStream(System.Net.WebRequest.Create(http://www.pxkt.com/logo.gif).GetResponse().GetResponseStream());
注:1、获得指定文件夹的所有文件的全路径
string [] path=Directory.GetFiles(@"......");
2、如果不加 if (pictureBox1.Image != null)pictureBox1.Image.Dispose();会导致内存的溢出而报错。
示例:
/// <summary>
/// 程序进入的时候加载函数,给每个picturebox给一张照片
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox2.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox3.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox1.Image = Image.FromFile(path[i]);
pictureBox2.Image = Image.FromFile(@"C:\Users\Administrator\Desktop\4\_DSC2211.jpg");
pictureBox3.Image = Image.FromFile(@"C:\Users\Administrator\Desktop\4\_DSC2211.jpg");
}
string[] path = Directory.GetFiles(@"C:\Users\Administrator\Desktop\4");
int i = 0;
Random r = new Random();
/// <summary>
/// 定时器控制每隔一秒换一张图片
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void timer1_Tick(object sender, EventArgs e)
{
i++;
if (i == path.Length)
{
i = 0;
}
if (pictureBox1.Image != null)pictureBox1.Image.Dispose();
if (pictureBox2.Image != null) pictureBox2.Image.Dispose();
if (pictureBox3.Image != null) pictureBox3.Image.Dispose();
pictureBox1.Image = Image.FromFile(path[r.Next(0,path.Length)]);
pictureBox2.Image = Image.FromFile(path[r.Next(0,path.Length)]);
pictureBox3.Image = Image.FromFile(path[r.Next(0,path.Length)]);
}
值得注意的是如果不加
if (pictureBox1.Image != null)pictureBox1.Image.Dispose();
会导致内存的溢出。
以上是关于PictureBox的内存问题的主要内容,如果未能解决你的问题,请参考以下文章