int x = label.getSize().width;
int y = label.getSize().height;
int ix = image.getWidth();
int iy = image.getHeight();
int dx = 0;
int dy = 0;
if(x/y > ix/iy) {
dy = y;
dx = dy*ix /iy;
} else {
dx = x;
dy = dx*iy /ix;
}
ImageIcon icon = new ImageIcon(image.getScaledInstance(dx, dy, image.SCALE_SMOOTH));
和完整的代码:https://paste.ubuntu.com/26227642/
我只知道这个代码意味着制作比例图像不会失真。这是为什么?
if(x /y >ix /iy) {
dy = y;
dx = dy*ix /iy;
}else {
dx = x;
dy = dx*iy /ix;
}
这一切都是为了制作你的Aspect Ratio
的label
,就像你的ImageIcon
.so那样它不会扭曲。
if statement
中的第一个条件意味着您的标签的Aspect ratiox/y
大于imageix/iy
的宽高比。因此,它首先将标签的height
dy
设置为图像y
的高度,并使其与标签的长宽比相同它将它与图像的宽高比ix/iy
相乘,即ix/iy
与你的else block
相同的事情。当aspect ratio
更多。