我使用定制的渲染器为我的 8 位计算机模拟器重新缩放屏幕,该模拟器在 Java 9 之前的环境中运行良好。在 Java 9 中,当 JVM 自动调整屏幕大小以适应不同的分辨率时,它会在主屏幕上产生三角形失真。在模拟器中启用扫描线时最为明显。我怀疑它与这个 ==> http://openjdk.java.net/jeps/263在 Java 9 中交付有关。
例如,在 Windows 10 上使用 Java 9 在 4K 显示器上执行以下程序时可以看到效果。
public static void main(String[] args){
JFrame frame=new JFrame("Java version 9");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
BufferedImage image =new BufferedImage(800,600,BufferedImage.TYPE_INT_RGB);
Graphics2D g=image.createGraphics();
g.setColor(Color.WHITE);
for(int y=0;y<image.getHeight();y+=2){
g.drawLine(0,y,image.getWidth(),y);
}
g.dispose();
ImageIcon imageIcon=new ImageIcon(image);
JLabel label=new JLabel(imageIcon);
frame.add(label);
frame.pack();
frame.setVisible(true);
}
以下是使用 JDK 1.8.0_144 时相同程序的外观,这是期望的结果。
有没有办法在 Java 9 中禁用默认的自动重新缩放屏幕,这也与 Java 9 之前的环境兼容?