询问Javaswing ImageIcon

时间:2017-12-22 04:14:33

标签: java

    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/

我只知道这段代码意味着制作缩放图像不会失真。那是为什么?

1 个答案:

答案 0 :(得分:0)

if(x /y >ix /iy) {
    dy = y;
    dx = dy*ix /iy;
}else {
    dx = x;
    dy = dx*iy /ix;
}

这一切都是为了使Aspect Ratio label和你的ImageIcon一样if statement。这样就不会扭曲。

x/y中的第一个条件表示标签的宽高比ix/iy大于图片height 的宽高比。所以它首先设置了标签的dy y与图片ix/iy的高度相同,并且为了与标签制作相同的宽高比,它将其与宽高比ix/iy相乘图像即else block

aspect ratio相同的事情。 def __exit__(self, type, value, traceback): return isinstance(value, TypeError) 更多。