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());

注: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();会导致内存的溢出。
时间: 2024-10-10 14:18:24

PictureBox的内存问题的相关文章

C#简单一句代码,实现pictureBox的照片另存为磁盘文件不出错

开发人事档案系统时,一般都要利用pictureBox对人员的照片进行操作,包括选择保存照片.另存照片.删除照片,如下图: 将照片保存到数据库和从数据库中删除,网友写了很多实用代码,非常好用.但是要将pictureBox上显示的照片另存为磁盘文件时,非常容易出现“GDI+ 发生一般性错误”.网上有很多建议,都不符合我的要求,要么另存出来的照片不能正常显示,要么代码非常繁琐.经过我测试,其实方法很简单,C#一句代码就可以实现pictureBox照片另存为磁盘文件而不出错.主要代码如下: if (Sa

(转)C#picturebox控件使用

PictureBox是C#常用图片空间,本文是学习中搜集网络资料的一些整理和记录 1,PictureBox加载图片 using System.Drawing; //方式1,从图片文件载入 //下面的路径是写死的,可以获取程序运行路径,这样更灵活 Image AA = new Bitmap(@"/Program Files/PictureBoxControlTest/tinyemulator_content.jpg"); pictureBox1.Image =AA; //方式2,通过im

Winform应用程序处理图像Image时内存不足异常时的处理方法

在做Winform应用程序处理图像Image时碰到了这样一个问题.窗体设计如下: 当点击上面窗体中的上一张和下一张时,PictureBox中的图片会跟着切换,但是切换时却抛出了如下图所示的异常: 内存不足!!! 我一开始的关键代码如下所示: private void Form1_Load(object sender, EventArgs e) { pictureBox1.Image = Image.FromFile(@"f:\图片\1.jpg"); } string[] path =

JavaScript的进阶之路(二)函数简介,变量、作用域和内存问题

<h3>ECMAScript中函数不存在函数签名的概念,没有重载</h3><h3>无需指定返回值,可以在任何时候返回任何值.未指定返回值的函数,返回的是一个特殊的undefined值</h3> <script type="text/javascript"> function sayHi(){ console.log("Hi"); }; sayHi(); function sayName(name,age){

【c/c++】内存分配大小

测试平台:linux 32位系统 用sizeof()运算符计算分配空间大小.单位:字节 1. 数组名与变量名的区别 int main() { char q[] = "hello"; cout << "q:" << sizeof(q) << endl; char *mq = q; cout << "mq:" << sizeof(mq) << endl; const char *

Performance Monitor3:监控SQL Server的内存压力

SQL Server 使用的资源受到操作系统的调度,同时,SQL Server在内部实现了一套调度算法,用于管理从操作系统获取的资源,主要是对内存和CPU资源的调度.一个好的数据库系统,必定在内存中缓存足够多的信息,以减少从物理硬盘中读取数据的次数:如果内存是系统瓶颈,那么SQL Server一定会运行的非常慢.监控SQL Server的内存压力,需要从Widnows级别上,对内存使用的整体使用情况进行监控:从SQL Server级别上,监控SQL Server对内存资源的使用情况. 一,从Wi

试试SQLSERVER2014的内存优化表

原文:试试SQLSERVER2014的内存优化表 试试SQLSERVER2014的内存优化表 SQL Server 2014中的内存引擎(代号为Hekaton)将OLTP提升到了新的高度. 现在,存储引擎已整合进当前的数据库管理系统,而使用先进内存技术来支持大规模OLTP工作负载. 就算如此,要利用此新功能,数据库必须包含"内存优化"文件组和表 即所配置的文件组和表使用Hekaton技术. 幸运的是,SQL Server 2014使这一过程变得非常简单直接. 要说明其工作原理,我们来创

Linux内存VSS,RSS,PSS,USS解析

转载:http://myeyeofjava.iteye.com/blog/1837860 adb shell procrank | grep com.package > appmem说明:五个参数分别为PID Vss Rss Pss Uss 一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)RSS - Resident Set Size 实际使用物理内存(包含共享库占用

函数一直无法立即退出,在等待了大约30s后才能退出(QMulitHash释放不连续的内存需要很长世间,而这样设置局部变量后又无法避免这个问题)

局部变量使用对性能的影响以及进程的堆和栈: 由于在代码中我使用了QMulitHash<QString , LHFilteVersionItem> tmp;这一局部变量来保存某一目录下的文件,由于在写测试代码期间,我利用循环模拟了50万的数据序列化后保存在文件中,在运行期间我发现读取函数耗费很长的时间,而函数里面最耗时的读取操作也只花费了很短的时间,但是函数一直无法立即退出,在等待了大约30s后才能退出,相关代码如下: [cpp] view plain copy void LHTWORKFLOW