询问Javaswing ImageIcon

问题描述 投票:-4回答:1
    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/

我只知道这个代码意味着制作比例图像不会失真。这是为什么?

java
1个回答
0
投票
if(x /y >ix /iy) {
    dy = y;
    dx = dy*ix /iy;
}else {
    dx = x;
    dy = dx*iy /ix;
}

这一切都是为了制作你的Aspect Ratiolabel,就像你的ImageIcon.so那样它不会扭曲。

if statement中的第一个条件意味着您的标签的Aspect ratiox/y大于imageix/iy的宽高比。因此,它首先将标签的height dy设置为图像y的高度,并使其与标签的长宽比相同它将它与图像的宽高比ix/iy相乘,即ix/iy

与你的else block相同的事情。当aspect ratio更多。

© www.soinside.com 2019 - 2024. All rights reserved.