Hỏi về ImageIcon trong javaswing

                    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));

cho em hỏi là được biết ý nghĩa của đoạn if else đó là để đặt tỷ lệ truyền ảnh vào đúng ko bị làm mất đi tỷ lệ của ảnh gốc. ai hiểu vì sao được như v giải thích em với ạ

FULL CODE:https://paste.ubuntu.com/26227642/

cám ơn a/c

Bạn có thể chuyển chữ x và y thành width và height để dễ hiểu hơn

Có thể hiểu đơn giản như sau:

  • Mục đích là scale ảnh cho bằng với label

=> Ta phải tìm một chiều(a) dài nhất của ảnh, sau đó scale chiều đó bằng với độ dài tương ứng của label(la), chiều còn lại(b) thì sẽ thực hiện scale theo chiều còn lại của label (lb) bằng phép toán b=a*lb/la

2 Likes

hehe e hiểu được sơ sơ r . cám ơn a :grin:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?