2013-01-16 30 views

Trả lời

11

một hạn chế của GrayFilter.createDisabledImage() là nó được thiết kế để tạo ra một diện mạo tàn tật cho các biểu tượng trên Look đa dạng & Feel triển khai. Sử dụng ColorConvertOp này example, những hình ảnh sau đây phản tác dụng:

GrayFilter.createDisabledImage(): com.apple.laf.AquaLookAndFeel image

ColorConvertOp#filter(): com.apple.laf.AquaLookAndFeel image

GrayFilter.createDisabledImage(): com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel image

ColorConvertOp#filter(): com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel image

/** 
* @see https://stackoverflow.com/q/14358499/230513 
* @see https://stackoverflow.com/a/12228640/230513 
*/ 
private Icon getGray(Icon icon) { 
    final int w = icon.getIconWidth(); 
    final int h = icon.getIconHeight(); 
    GraphicsEnvironment ge = 
     GraphicsEnvironment.getLocalGraphicsEnvironment(); 
    GraphicsDevice gd = ge.getDefaultScreenDevice(); 
    GraphicsConfiguration gc = gd.getDefaultConfiguration(); 
    BufferedImage image = gc.createCompatibleImage(w, h); 
    Graphics2D g2d = image.createGraphics(); 
    icon.paintIcon(null, g2d, 0, 0); 
    Image gray = GrayFilter.createDisabledImage(image); 
    return new ImageIcon(gray); 
} 
+0

+1 ví dụ rất đẹp và ảnh chụp màn hình :) –

+0

Tôi hiện chỉ cần nó cho các biểu tượng bị vô hiệu hóa, nhưng câu trả lời của bạn là cách tốt hơn tôi, vì vậy tôi sẽ chọn một. Cảm ơn bạn vì câu trả lời tuyệt vời. – Alfergon

+0

Bạn được chào đón và cảm ơn bạn. Tôi sẽ không nói _better_, chỉ _complementary_. :-) – trashgod

9

Bạn có thể sử dụng như sau:

ImageIcon icon = new ImageIcon("yourFile.gif"); 
Image normalImage = icon.getImage(); 
Image grayImage = GrayFilter.createDisabledImage(normalImage); 
+1

@DavidKroukamp Hỏi và trả lời các câu hỏi của bạn được khuyến khích trên mạng stack Exchange, thấy - http://meta.stackexchange.com/a/17847/140951 (và tôi có tài liệu tham khảo khác nếu bạn muốn chúng) để biết thêm. – casperOne

+1

@TechExchange Hỏi và trả lời câu hỏi của bạn được khuyến khích trên mạng Stack Exchange, hãy xem - http://meta.stackexchange.com/a/17847/140951 (và tôi có các tham chiếu khác nếu bạn muốn) để biết thêm. – casperOne

Các vấn đề liên quan