我正在开发一个图像处理应用程序。为了缩放图像,我放大了 PictureBox。但在放大后,我得到了下面的图像。
但是我想要下图这样的结果
这是我的代码:
picturebox1.Size = new Size((int)(height * zoomfactor), (int)
(width* zoomfactor));
this.picturebox1.Refresh();
最佳答案
PictureBox 本身总是会创建一个漂亮流畅的版本。
要创建您想要的效果,您需要自己绘制缩放版本。为此,您需要设置
Graphics.InterpolationMode = InterpolationMode.NearestNeighbor;
那么就不会发生模糊了..
例子:
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.PixelOffsetMode = PixelOffsetMode.Half;
g.DrawImage(bmp, new Rectangle( Point.Empty, zoomed.Size) );
}
pictureBox2.Image = zoomed;
}
当然,您需要避免将 PBox 设置为 Sizemode Zoom 或 Stretch!
关于c# - 放大图片框时图像变得模糊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49554126/