源文件的图片宽高比我所设置的picturebox宽高大,图片只显示部分,
有没办法使图片自动缩放,全部显示出来呢?
可以设置picturebox 的SizeMode属性:
图像被置于 PictureBox 的左上角。如果图像比包含它的 PictureBox 大,则该图像将被剪裁掉。
PictureBox 中的图像被拉伸或收缩,以适合 PictureBox 的大小。
调整 PictureBox 大小,使其等于所包含的图像大小。
如果 PictureBox 比图像大,则图像将居中显示。如果图像比 PictureBox 大,则图片将居于 PictureBox 中心,而外边缘将被剪裁掉。
图像大小按其原有的大小比例被增加或减小。
也可以通过代码实现:
pictrebox1.SizeMode=PictureBoxSizeMode.AutoSize //PictureBoxSizeMode是一个结构体
或者:
可把Picturebox放到Panel中
此Panel跟PictureBox沒放圖前一樣大或是大一點
然後把Panel的AutoScroll設為True
並把PictureBox的SizeMode設為AutoSize
這樣就有類似的效果
举例:
方法一:
如果要加载的图片的长宽比不是太过失衡,可以改变picturebox的SizeMode属性为 PictureBoxSizeMode.StretchImage。这样加载到picturebox的图片会充满整个picturebox。但是 当图片长宽比比较大时,这个方法显得不是太好了。可以选择方法二。
方法二: 可参考; http://www.cnblogs.com/fengzanfeng/articles/1339107.html
OpenFileDialog ofdPic= new OpenFileDialog();
ofdPic.Filter = "JPG(*.JPG;*.JPEG);gif文件(*.GIF)|*.jpg;*.jpeg;*.gif";
ofdPic.FilterIndex = 1;
ofdPic.FileName = "";
if (ofdPic.ShowDialog() == DialogResult.OK)
{
string sPicPaht = ofdPic.FileName.ToString();
Bitmap bmPic = new Bitmap(sPicPaht);
Point ptLoction = new Point(bmPic.Size);
if (ptLoction.X > mypicbox.Size.Width || ptLoction.Y > mypicbox.Size.Height)
{
//圖像框的停靠方式
//pcbPic.Dock = DockStyle.Fill;
//圖像充滿圖像框,並且圖像維持比例
mypicbox.SizeMode = PictureBoxSizeMode.Zoom;
}
else
{
//圖像在圖像框置中
mypicbox.SizeMode = PictureBoxSizeMode.CenterImage;
}
//LoadAsync:非同步載入圖像
mypicbox.LoadAsync(sPicPaht);
}
希望对你有帮助!