当前位置:  开发笔记 > 编程语言 > 正文

如何在任意Java应用程序中启用抗锯齿?

如何解决《如何在任意Java应用程序中启用抗锯齿?》经验,为你挑选了3个好方法。

尽管Swing能够提供抗锯齿功能,但许多Java应用程序默认情况下不使用抗锯齿字体.如何强制使用任意java应用程序来使用AA字体?(对于我正在运行的应用程序和我正在开发的应用程序)



1> rcreswick..:

如果您有权访问源,可以在main方法中执行此操作:

  // enable anti-aliased text:
  System.setProperty("awt.useSystemAAFontSettings","on");

或者,(如果您无权访问源,或者这样更容易),您可以通过将以下选项添加到命令行,将上面的系统属性传递到jvm:

-Dawt.useSystemAAFontSettings=on


将`awt.useSystemAAFontSettings`设置为`on`意味着*使用抗锯齿**而不使用子像素渲染***这是大多数时候(使用LCD显示时)**不是**首选.而是使用`lcd`值.见http://wiki.netbeans.org/FaqFontRendering
+1我每天都学到新东西.谢谢!

2> Luke Usherwo..:

最新版本的Java 6/7中的Swing控件应自动遵循系统范围的首选项.(如果您在Windows操作系统上使用Windows L&F,那么如果您在系统范围内启用了该设置,则应使用ClearType呈现文本.)因此,也许一个解决方案可能只是:启用本机外观?

在你正在开发的应用程序中,如果你直接渲染自己的文本,你还需要做这样的事情(在打电话Graphics.drawText或朋友之前的某个时候):

if (desktopHints == null) { 
    Toolkit tk = Toolkit.getDefaultToolkit(); 
    desktopHints = (Map) (tk.getDesktopProperty("awt.font.desktophints")); 
}
if (desktopHints != null) { 
    g2d.addRenderingHints(desktopHints); 
} 

参考:http://weblogs.java.net/blog/chet/archive/2007/01/font_hints_for.html



3> Al-Khwarizmi..:

为了记录,我发现在我的Windows 7机器中,

如果我不在代码中使用它,我会得到漂亮的ClearType子像素渲染.

但是,如果我使用它,我会得到经典的黑白抗锯齿,这是非常丑陋的.

因此应谨慎使用此代码.我想当所有Linux用户都更新到默认情况下处理别名的OpenJDK版本时,它将完全不再需要.


尝试System.setProperty("awt.useSystemAAFontSettings","lcd"); 你应该得到ClearType.
推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有