C#:调整图片框大小以适合图像

时间:2014-10-15 08:01:59

标签: c# image winforms

在我的应用程序(winforms)中,我想加载不同的图像。这些图像具有不同的大小和不同的宽高比(让我们说我有400x400和1920x1200。)现在我有一个图片框来放置这些图像,并且图片框的 SizeMode属性设置为缩放

现在我在一个图片框中有一个图像,它被调整大小以适应picuterbox的边界。但如果图片框的宽高比与图像不同,我将留下一些不需要的空白空间。 将SizeMode设置为拉伸,不是一个选项。

?:所以我想知道,如果有办法获得自动调整大小的图片的大小,那么我可以相应地更改图片框的大小。< / p>

Image myImg = new Image.FromFile(..//landscape.jpg)
int getWidth = myImg.Width;
int getHeight = myImg.Height;
// This does not work, as it gets the original size of the image (eg: in case of a 1920x1200, it gets 1920 and 1200 respectively)

这就是现在发生的事情:

Wrong ratio Wrong ratio

这就是我想要的:

Required ratio 由于应用程序应该能够处理任何图像,我需要动态设置这些值,因此不能预设任何值。

1 个答案:

答案 0 :(得分:4)

我们说盒子是400x400。当图片进入框中时,它会调整大小以适应框边界,但保持其纵横比。所以我们需要做的是计算框内图像的新大小,并调整框的大小以匹配。

Image myImg = new Image.FromFile(..//landscape.jpg)
int getWidth = myImg.Width;
int getHeight = myImg.Height;
double ratio = 0;
if(getWidth>getHeight)
{
    ratio = getWidth/400;
    getWidth=400;
    getHeight=(int)(getHeight/ratio);
}
else
{
    ratio = getHeight/400;
    getHeight=400;
    getWidth=(int)(getWidth/ratio);
}
pictureBox.Width=getWidth;
pictureBox.Height=getHeight;

(不知道确切的类,所以可能会抛出一两个错误,但概念是合理的)

相关问题