做一个GDI+处理图片的东西,在PictureBox上显示一个图片进行放大缩小,但是放大的时候图片的质量就不高了,该怎么处理呢?还是换掉图片的格式?二进制?

解决方案 »

  1.   

    单独保存源图片,每次放大缩小都使用源图片而不用PictureBox里面的Image吧。
      

  2.   

    图像一旦放大或缩放,显示质量必然就会下降,只有图像与显示器像素重合时效果最好。
    可以想着用算法对图象进行插值 
    网上有专门的算法,不过图象如果插的过大,速度上会比较慢,而且效果不好,马赛克出现 
    google一下“c# 图像插值算法”
      

  3.   

    我同意一楼的观点,帮你解释一下。
    就是你要处理的那张原图片单独保存在一个变量里,然后复制出一份拷贝,将这份拷贝提供给PictureBox。
    比如你要做放大缩小,就用原图片做,然后把调整大小后的图片复制给PictureBox。
    例子:
    Image imgOriginal = ...; //原图
    Image imgDisplay = imgOriginal.Copy(); //可能没有这个方法,只是示意做一份拷贝
    PictureBox.Image = imgDisplay.放大缩小();
    //如果要做其他变化
    imgDisplay = imgOriginal.Copy(); //重新获得一份拷贝
    PictureBox.Image = imgDisplay.其他变化();
      

  4.   

    我知道你们的意思了,显然是我自己表达的不好,这个pictureBox我让其可以放大和缩小, p.SizeMode = PictureBoxSizeMode.StretchImage;//若想图片的大小跟随pictureBox的大小而改变,在这种情况下,图片的质量会发生变化,质量不是很高。
      

  5.   

    这样的话就看看3楼的回答吧,不过最好还是进行下像素限制,不然再好的算法你给我一个16*16的PNG,我放大到1024*768肯定看不清的,一般放大到原始像素的单向2倍大小就可以了。