在我的应用程序(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)
这就是现在发生的事情:
这就是我想要的:
由于应用程序应该能够处理任何图像,我需要动态设置这些值,因此不能预设任何值。
答案 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;
(不知道确切的类,所以可能会抛出一两个错误,但概念是合理的)