01/10/2018, 13:50

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

Dark.Hades viết 15:55 ngày 01/10/2018

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

Nguyễn Khanh viết 16:05 ngày 01/10/2018

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

Bài liên quan
0