保持图像的纵横比?(Maintain the aspect ratio of an image?)

2019-08-17 22:35发布

我使用的图片框,以显示其从服务器接收到的图像,但我的问题是,在紧凑的框架,图片框只有三个尺寸模式

StretchImage,正常,CenterImage

我得到的图片一般都是个头大,所以我不得不使用StrecthImage模式。 但随后的宽高比保持不变,从而示出被扭曲的图像。

所以,是他们无论如何出来这个问题的?

Answer 1:

终于,我发现我的问题的答案是这里-----

 float actualHeight = myImg.Height;
 float actualWidth = myImg.Width;
 float imgRatio = actualWidth / actualHeight;
 float maxRatio = (float)this.Width / this.Height;

                if(imgRatio!=maxRatio)
                {
                    if (imgRatio < maxRatio)
                    {
                        imgRatio = this.Height / actualHeight;
                        actualWidth = imgRatio * actualWidth;
                        actualHeight = this.Height;
                    }
                    else
                    {
                        imgRatio = this.Width / actualWidth;
                        actualHeight = imgRatio * actualHeight;
                        actualWidth = this.Width;
                    }
                }
 pictureBox.Size=new Size((int)actualWidth,(int)actualHeight);
 pictureBox.Location = new Point((int)((this.Width - actualWidth) / 2), (int)((this.Height - actualHeight) / 2));

但在此之前保持图片框尺寸模式stretchImage



文章来源: Maintain the aspect ratio of an image?