调整PictureBox宽度并保持纵横比

时间:2018-04-30 20:17:53

标签: c# winforms resize picturebox aspect-ratio

我将图片动态加载到预先存在的PictureBox person_img,该图片框具有所有默认值且尺寸不正确。我希望能够动态调整大小,使所有图像都是people_popup_tab宽度的1/3。

我尝试了很多方法,包括类似问题的答案。我最后的尝试是加载图像并将SizeMode设置为AutoSize,以便它首先以其全尺寸渲染,然后我就能以这种方式获得其宽度和高度。然后我会使用这个宽度和高度来知道如何按比例缩放图像。

但是图像仍然让人感到难以理解。有些人现在根本就没有出现。

enter image description here

如何在不丢失宽高比的情况下将图像调整为people_popup_tab宽度的1/3?

我目前的代码:

person_img.SizeMode = PictureBoxSizeMode.AutoSize;
person_img.Load(thisFaculty.imagePath);
int oldWidth = person_img.Width; 
int oldHeight = person_img.Height;
int newWidth = people_popup_tab.Width / 3;
int newHeight = oldHeight * (newWidth / oldWidth);
person_img.SizeMode = PictureBoxSizeMode.StretchImage;
person_img.Width = newWidth;
person_img.Height = newHeight;

1 个答案:

答案 0 :(得分:0)

首先将图像加载到Bitmap类,然后使用图像的实际尺寸调整图片框的大小。类似于以下代码

var bmp = new Bitmap(imageFile);
pictureBox1.Width = bmp.Width / 3;
pictureBox1.Height = bmp.Height / 3;
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox1.Image = bmp;
相关问题