imageList增加图片时出现内存不足,求帮助!

Equn 2011-10-26 10:30:49
出错代码:
************** 异常文本 **************
System.OutOfMemoryException: 内存不足。
在 System.Drawing.Graphics.CheckErrorStatus(Int32 status)
在 System.Drawing.Graphics.DrawImage(Image image, Rectangle destRect, Int32 srcX, Int32 srcY, Int32 srcWidth, Int32 srcHeight, GraphicsUnit srcUnit, ImageAttributes imageAttrs, DrawImageAbort callback, IntPtr callbackData)
在 System.Drawing.Bitmap.MakeTransparent(Color transparentColor)
在 System.Windows.Forms.ImageList.CreateBitmap(Original original, Boolean& ownsBitmap)
在 System.Windows.Forms.ImageList.ImageCollection.Add(Original original, ImageInfo imageInfo)
在 System.Windows.Forms.ImageList.ImageCollection.Add(String key, Image image)
在 Equn.KDDPrint.frmDownload.kd_ViewCompleted(Object sender, ViewCompletedEventArgs e)
在 Equn.KDDPrint.KddService.kdd.OnViewOperationCompleted(Object arg)

在开发的机器上测试是正常的,测试好些台1G内存的电脑时出错。程序代码如下:


void kd_ViewCompleted(object sender, ViewCompletedEventArgs e)
{

//清除原有项目
listView1.Items.Clear();
imageList1.Images.Clear();

vTemplate[] vts = e.Result;

StartIndex = (PageIndex - 1) * 4 + 1;
EndIndex = StartIndex + vts.Length - 1;
this.Text = "共有 " + TemplateCount.ToString() + " 个模板,当前第" + StartIndex.ToString() + "到" + EndIndex.ToString() + "个"+" - 模板下载";


foreach (vTemplate vt in vts)
{
ListViewItem item = new ListViewItem();
item.Text = vt.title;
item.Tag = vt.id;
item.ToolTipText = vt.id.ToString() + "号模板:" + vt.title;

Image logo= StringToImage(vt.smallimg);

imageList1.Images.Add("img" + vt.id.ToString(), logo); //应该是这里出错了
item.ImageKey = "img" + vt.id.ToString();
logo.Dispose();

listView1.Items.Add(item);

}

//更新按钮状态
btnUpPage.Enabled = StartIndex > 1;
btnNextPage.Enabled = EndIndex < TemplateCount;
btnDown.Enabled = false;
}


要如何解决啊? 求高手指点。
...全文
593 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
solomon2002 2013-11-29
  • 打赏
  • 举报
回复
文件夹生成了隐藏的Thumbs.db,代码把它也当作图片来增加时会报这个错。
kudiao119 2013-01-28
  • 打赏
  • 举报
回复
很明显图像损坏也会报错
Equn 2011-11-15
  • 打赏
  • 举报
回复
只要设置透明色就会出现内存不足,不设就不会。
sjfbtnmcn 2011-10-26
  • 打赏
  • 举报
回复
奇怪的问题,没碰到过,帮顶
Equn 2011-10-26
  • 打赏
  • 举报
回复
在出错的xp机器上占用内存是38M多
Equn 2011-10-26
  • 打赏
  • 举报
回复
系统资源管理器显示程序占用内存是17M多点
Equn 2011-10-26
  • 打赏
  • 举报
回复
ImageSize是150X120
蝶恋花雨 2011-10-26
  • 打赏
  • 举报
回复
还有原因是有可能多次重复图片了。你换用Properties.Resource里的图像 应该就不会这样了
蝶恋花雨 2011-10-26
  • 打赏
  • 举报
回复
有可能没及时释放图片资源造成的。
stonespace 2011-10-26
  • 打赏
  • 举报
回复
呵呵,多半是你的文件路径错了,你检查一下文件路径是否生成对了,
dzgfeng 2011-10-26
  • 打赏
  • 举报
回复
好像是你的foreach循环重复加载了
Equn 2011-10-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sjfbtnmcn 的回复:]

奇怪的问题,没碰到过,帮顶
[/Quote]

谢谢啊

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧