在c放大图片框时图像变得模糊

时间:2018-03-29 10:47:56

标签: c# winforms

我正在开发一个图像处理应用程序。要缩放图像,我放大PictureBox。但是在放大之后,我得到了低于图像的结果。

Application Output Image

但我想要下面的图像

Actual Output Image

这是我的代码:

      picturebox1.Size = new Size((int)(height * zoomfactor), (int) 
      (width* zoomfactor));
      this.picturebox1.Refresh();

2 个答案:

答案 0 :(得分:1)

PictureBox本身将始终创建一个漂亮而流畅的版本。

要创建您想要的效果,您需要自己绘制缩放版本。在这样做时,您需要设置

 Graphics.InterpolationMode = InterpolationMode.NearestNeighbor;

然后不会发生模糊......

示例:

enter image description here

private void trackBar1_Scroll(object sender, EventArgs e)
{
    Bitmap bmp = (Bitmap)pictureBox1.Image;
    Size sz = bmp.Size;
    Bitmap zoomed = (Bitmap)pictureBox2.Image;
    if (zoomed != null) zoomed.Dispose();

    float zoom = (float)(trackBar1.Value / 4f + 1);
    zoomed = new Bitmap((int)(sz.Width * zoom), (int)(sz.Height * zoom));

    using (Graphics g = Graphics.FromImage(zoomed))
    {
      if (cbx_interpol.Checked) g.InterpolationMode = InterpolationMode.NearestNeighbor;
      g.DrawImage(bmp, new Rectangle( Point.Empty, zoomed.Size) );
    }
    pictureBox2.Image = zoomed;
}

当然,您需要避免将PBox设置为Sizemode Zoom或Stretch!

答案 1 :(得分:0)

可能是问题的图像类型。如果展开图像,则会降低压缩质量。也许这个链接可能有帮助

image Scaling of picture box