添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

C# GDI+绘图出现内存不足问题

这两天开发一个图片放大功能,通过读取保存在数据库中的二进制图片流,在Datagridview中显示,然后选中列表中的图片进行放大的显示的功能。在 放大过程中出现“内存不足”的异常;经过网上的查询,最后发现原来是读取数据库二进制图片流时,进行图片流的关闭,与清空。其实不是内存不足,问题很明晰 了 【二进制打开了图片,关闭流再画时就会报内存不足】 ,画图时,它所用到的流必须一直保持打开状态,你关闭了,还怎么画?很多底层的模块会报告“内存不足”,不是因为内存不足,而是由于遇到了野指针。贴出部分代码以作解释:

//将Datagridview中的图片读取的内存流

MemoryStream ms=new MemoryStream((byte[])datagridview1.Rows[RowIndex].cells["FSPic"].value);

ms.Position=0;

pictureBox1.Image=Image.FromStream(ms);

//ms.close();//释放内存图片流----------此处被释放引发的异常

//ms.Dispose();

此处被释放掉下面的GDI+ 操作内存流就出现异常。

转载于:https://www.cnblogs.com/vmyspace/archive/2012/03/19/2405670.html

原文链接: http://www.cnblogs.com/vmyspace/archive/2012/03/19/2405670.html 前几篇我已经向大家介绍了如何使用 GDI +来 绘图 ,并做了一个截图的实例,这篇我向大家介绍下如何来做一个类似windows画图的工具.个人认为如果想做一个功能强大的 绘图 工具,那么单纯掌握 GDI 还远远不够,我的目前也只能做一个比较简单的 绘图 工具了.不足之处,欢迎大家讨论!先来看一下最终效果吧: 主要实现功能:画直线,矩形,橡皮,圆形,切换颜色,打开图片,保存图片,清除图片,手动调节画布大小;软件刚启动时,为一张空白画布,我们可以直接在画布上绘画,也可以通过菜单中的“打开”,导入一张图片,然后我们就可以在这张图片上进行绘制。平台:VS2005 WINFORM由于代码过多,在这里只简要介绍下制作步骤,提 在上一篇里已经向大家介绍了如何使用 GDI+ 绘制简单的图像,这一片继续向大家介绍其它一些 绘图 知识.1.首先我们来看下上一片中我们使用过的Pen.Pen的属性主要有: Color(颜色),DashCap(短划线终点形状),DashStyle(虚线样式),EndCap(线尾形状), StartCap(线头形状),Width(粗细)等.我们可以用Pen 来画虚线,带箭头的直线等 代码如下:Pen  p = new  Pen(Color.Blue, 5);//设置笔的粗细为,颜色为蓝色Graphics  g = this.CreateGraphics();//画虚线p.DashStyle = DashS C# GDI+ 绘图 串口操作实例,源码内有个Protocol.cs有意思,实现:1)系统时间校订(精确到10ms):起始符(#)+%+年月日(11 07 06)+小时分秒(17 22 01)+结束符($),2)系统参数设置(上位机发出):起始符(#)+系统参数(S)+%+主机编号(00000221)+%+塔机编码(1)+%+坐标X(1681)+%+坐标Y(178.0)+%+ 前臂长(56.0)+%+后壁长(10.0)+%+塔顶高(35.0)+%+塔臂高(20.0)+%+最大吊重(12.000)+%+最大力矩(200.000)+%+塔机型号(ZQ40)+%+登记编号(00001)+%+产权状态 我在做串口通信的时候,使用定时器从串口中读取信息并显示到DataGridView中,间隔300ms,过了一两个小时后,读取信息的频率变慢了。 追究原因,是因为DataGridView的数据量变大了,导致内存不够用。 做了一些改善,当数据量超过一定数量的时候,就删除第一条数据。 这样就不会导致内存不够用了。...       由 C# 向C++里面传递图像的过程中,多加载几次图像后,内存会暴涨,主要有两个原因: 一、pictureBox的清理不能用pictureBox.Image=null清除,而应该使用,pictureBox1.Image.Dispose()。 二、Bitmap实例化之后,需要释放用dispose()空间。 [DllImport("HoleDetect.dll", Ca... 注:第一次写博客,把自己遇到的 问题 和收集的资料记录在博客上。在开发.NET应用中,使用 System.Drawing.Image.Save 方法而导致“ GDI+ 中发生一般性错误”的发生,通常有以下三种原因:1. 相应的帐户没有写权限。解决方法:赋予 NETWORK SERVICE 帐户以写权限。2. 指定的物理路径不存在。解决方法:在调用 Save 方法之前,先判断目录是否存在,若不存在,则创建... 在做Winform应用程序处理图像Image时碰到了这样一个 问题 。窗体设计如下: 当点击上面窗体中的上一张和下一张时,PictureBox中的图片会跟着切换,但是切换时却抛出了如下图所示的异常: 内存不足 !!! 我一开始的关键代码如下所示: private void Form1_Load(object sender, EventArgs e) 转载地址:https://www.debugease.com/csharp/4441632.html 1、WinForm,主窗体-子窗体模式 2、关闭子窗体,使用Hide(),打开子窗体,使用Show() 3、软件就是ERP、进销存,支持图片,Socket上传下载 4、表格数据多大概这些,然后,软件运行久了,就达到几百M,然后用着用着就突然弹出 内存不足 ,好恐怖,请问解决思想好,谢谢。 ==============================================================