码迷,mamicode.com
首页 > 其他好文 > 详细

PictureBox的内存问题

时间:2017-05-18 23:57:12      阅读:428      评论:0      收藏:0      [点我收藏+]

标签:user   app   表示   枚举类   msdn   位图   int   sys   dmi   

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());
 
注: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的内存问题

标签:user   app   表示   枚举类   msdn   位图   int   sys   dmi   

原文地址:http://www.cnblogs.com/apollo-shen/p/6876126.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!