On 24.01.2014 18:20, Hendrik Schreiber wrote:
However, your other suggestion (double size bufferedimage), does not work. Is 
this intended or a bug?
What happen if you change l&f to the Nimbus? I suggest to file the new CR to investigate this.

Thanks!

-hendrik



Here's a simple demo class. I'd expect both checkboxes to render in the same 
quality, but they don't using a BufferedImage.

import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;

public class RenderHiDPI {

     public static void main(String[] args) {
         final JFrame frame = new JFrame();
         final JLabel label = new JLabel();
         frame.getContentPane().setLayout(new FlowLayout());
         final JCheckBox hiDPICheckBox = new JCheckBox("Hi DPI");
         hiDPICheckBox.setFocusable(false);
         frame.getContentPane().add(hiDPICheckBox);
         frame.getContentPane().add(label);
         final JCheckBox checkBox = new JCheckBox("Lo DPI");
         checkBox.setSize(new Dimension(100, 100));
         final BufferedImage image = new BufferedImage(200, 200, 
BufferedImage.TYPE_INT_ARGB);
         final Graphics g = image.getGraphics();
         ((Graphics2D)g).scale(2f, 2f);
         checkBox.paint(g);
         g.dispose();
         label.setIcon(new Icon(){
             @Override
             public void paintIcon(final Component c, final Graphics g, final 
int x, final int y) {
                 final Graphics2D graphics = (Graphics2D)g.create();
                 graphics.scale(0.5f, 0.5f);
                 graphics.drawImage(image, x, y, c);
             }

             @Override
             public int getIconWidth() {
                 return 100;
             }

             @Override
             public int getIconHeight() {
                 return 100;
             }
         });

         SwingUtilities.invokeLater(new Runnable() {
             @Override
             public void run() {
                 frame.setBounds(100, 100, 100, 100);
                 frame.setVisible(true);
             }
         });
     }
}


--
Best regards, Sergey.

Reply via email to