有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Force Java2D亚像素抗锯齿

我正在使用Java2D生成带有文本的图像。在运行Ubuntu的服务器上,这些字体的抗锯齿效果非常糟糕,但在OSX和Ubuntu工作站上却呈现得非常漂亮。我猜这两个Ubuntu安装的区别是xwindows和没有xwindows?大概无论如何,我猜我的渲染提示被忽略了,服务器上没有使用java 1.6亚像素抗锯齿算法

我的渲染提示如下。我正在优化垂直放置的显示器

g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_VRGB);

我直接从一个ttf文件创建字体,这确实改善了渲染效果。我不认为这个字体是安装在机器上的,所以它默认为其他字体。现在字体是正确的,但抗锯齿仍处于关闭状态。它看起来确实比我完全关闭抗锯齿并生成图像时更好,所以我认为它正在做一些事情,但它看起来并不那么好

我试过Java属性

-Dawt.useSystemAAFontSettings=lcd

但这并没有改变任何事情

有什么建议吗?谢谢


共 (1) 个答案

  1. # 1 楼答案

    你已经试过这样的方法了吗:

    public void paintComponent(Graphics g){
      @SuppressWarnings("unchecked")
      Map<String, String> desktopHints = (Map<String, String>) Toolkit
        .getDefaultToolkit().getDesktopProperty("awt.font.desktophints");
      Graphics2D g2d = (Graphics2D) g;
      if(desktopHints != null){
        g2d.addRenderingHints(desktopHints);
      }
      g2d.drawString("text", 10, 10);
    }
    

    paintComponent()中接收的Graphics对象设置为不了解桌面属性(监视器类型)的默认值。查询desktophints工具箱将从底层操作系统返回有关所用硬件的信息。比较一下59页的“肮脏的富客户”