C#2003 Graphics画图内存不足

hzpdh 2013-12-07 12:01:33
我在做一个两张图片合并处理,小图片设置一定透明度覆盖在大图上。报错代码位置在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参数是放在最后释放的。
...全文
217 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dylike 2013-12-31
  • 打赏
  • 举报
回复
好吧,不发表了.其实可以lockbits后调整透明度的.
hzpdh 2013-12-31
  • 打赏
  • 举报
回复
不懂别乱发表,是野指针问题,自己找到了.
hzpdh 2013-12-07
  • 打赏
  • 举报
回复
自己再补充一下:在VS2010下测试没有问题,在2003下测试有这个问题
youzelin 2013-12-07
  • 打赏
  • 举报
回复
因为编译器这么老,不能确定是不是编译器本身的一个 bug,2010 正常,而当中相隔 2005、2008,很难说是不是编译器问题,你可以拿 2005 或者 2008 试试,如果 2005 可以,我觉得是初始版本的 bug,而不是代码的问题。(maybe)
youzelin 2013-12-07
  • 打赏
  • 举报
回复
2003。。。。。。。。真的需要 2003 吗?这么老?

110,571

社区成员

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

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

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