private Bitmap ResizeImage(Bitmap bmp,PictureBox picBox) { float xRate =(float) bmp.Width / picBox.Size.Width; float yRate = (float)bmp.Height / picBox.Size.Height; if (xRate <= 1 && yRate <= 1) { return bmp; } else { float tRate = (xRate >= yRate) ? xRate : yRate; Graphics g = null; try { int newW = (int)(bmp.Width / tRate); int newH = (int)(bmp.Height / tRate); Bitmap b = new Bitmap(newW, newH); g = Graphics.FromImage(b); g.InterpolationMode = InterpolationMode.HighQualityBicubic; g.DrawImage(bmp, new Rectangle(0, 0, newW, newH), new Rectangle(0, 0, bmp.Width, bmp.Height), GraphicsUnit.Pixel); g.Dispose(); //bmp.Dispose(); return b; } catch { //bmp.Dispose(); return null; } finally { if (null != g) { g.Dispose(); } } } }
上面的方法返回一个能在PictureBox中完全显示的图片。如果希望图片不变,在特定尺寸的PictureBox中显示尺寸较大的图片,可以采用以下方法。
把 picturebox 放在 panel里面。
然后 把 panel的AutoScroll 设置为true,
同时你将picturebox 大小设置成 图片的大小。
this.picturebox.width = this.image.width
this.picturebox.height = this.image.height
这样picturebox 大于 panel的时候,就可以用滚动条让图片显示全。