我要对一幅图片进行放大,picturebox的atuodraw设置true,在picturebox中用paintpicture放大时,像素大于4000x3000多时,就弹出内存溢出的提示,我的内存256。内存越大,可以放大像素越多。请教有没有办法来解决这个问题,用api内存管理或别的方法。请赐教。或给我发email:[email protected] 谢谢了!!!

解决方案 »

  1.   

    用PICTUREBOX解决这个问题当然不行了,AUTOREDRAW占用的内存空间是无法想象的。可以处理好以后再重绘,关闭AUTOREDRAW,也可以在内存处理,分批处理也行。
    另外你的图片放大后只会显示一部分,所以可以只针对一部分处理。
      

  2.   

    即使没有内存溢出,也不要用paintpicture或类似的api函数进行放大,放大到一定程度时,图象太难看了,你应该用双线内插值、三次卷积法等算法进行图片放大参考一下:
    http://www.csdn.net/Develop/Article/15/15656.shtm
    图像几何变换(缩放、旋转)中的插值算法http://search.csdn.net/expert/topic/51/5104/2002/11/5/1151556.htm
    你会有收获的
      

  3.   

    ( (4000*3)x(3000*3) )*3 = 324000000 (Byte)324MB啊!你有那么多内存吗?!不溢出才是一件奇怪的事
      

  4.   

    还有
    http://www.csdn.net/develop/article/20/20442.shtm
    我以前写的“平滑缩放”:
    http://www.fantasiasoft.net/Zyl910/zScale.zip