当前位置:编程学习 > C#/ASP.NET >>

C#2003 Graphics画图内存不足

我在做一个两张图片合并处理,小图片设置一定透明度覆盖在大图上。报错代码位置在g.DrawImage(小图(Image), new Rectangle(intX, intY, iWidth, iHeight), 0, 0, iWidth, iHeight, GraphicsUnit.Pixel,ImgAtt); 提示内存不足。
关键就是在这个ImgAtt上(我一加上就提示,去掉就不提示,这段是设置透明度的) ImgAtt设置如下:
ImageAttributes ImgAtt = new ImageAttributes();
ColorMap colorMap = new ColorMap();
colorMap.OldColor = Color.FromArgb(255, 0, 255, 0);
colorMap.NewColor = Color.FromArgb(0, 0, 0, 0);

ColorMap[] remapTable = { colorMap };

imageAttributes.SetRemapTable(remapTable, ColorAdjustType.Bitmap);

float[][] colorMatrixElements = {  
new float[] {1.0f, 0.0f, 0.0f, 0.0f, 0.0f},  
new float[] {0.0f, 1.0f, 0.0f, 0.0f, 0.0f},  
new float[] {0.0f, 0.0f, 1.0f, 0.0f, 0.0f},  
new float[] {0.0f, 0.0f, 0.0f, (float)iDiaphaneity/100f, 0.0f},  
new float[] {0.0f, 0.0f, 0.0f, 0.0f, 1.0f}};
ColorMatrix wmColorMatrix = new ColorMatrix(colorMatrixElements);

ImgAtt.SetColorMatrix(wmColorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap); 请高手帮我看一下。
补充:我没画越界,涉及到的相关Bitmap、Image、Graphics参数是放在最后释放的。 --------------------编程问答-------------------- 自己再补充一下:在VS2010下测试没有问题,在2003下测试有这个问题 --------------------编程问答-------------------- 2003。。。。。。。。真的需要 2003 吗?这么老? --------------------编程问答-------------------- 因为编译器这么老,不能确定是不是编译器本身的一个 bug,2010 正常,而当中相隔 2005、2008,很难说是不是编译器问题,你可以拿 2005 或者 2008 试试,如果 2005 可以,我觉得是初始版本的 bug,而不是代码的问题。(maybe)
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,