强制Java2D亚像素抗锯齿
我正在使用Java2D生成带有文本的图像。在运行Ubuntu的服务器上,字体的抗锯齿效果很差,但在OSX和Ubuntu工作站上却呈现得很漂亮。我想这两个Ubuntu安装之间的区别是xwindows和没有xwindows?大概无论如何,我猜我的渲染提示被忽略了,服务器上没有使用Java1.6亚像素抗锯齿算法 我的渲染提示如下。我正在优化垂直定位的显示器强制Java2D亚像素抗锯齿,java,linux,antialiasing,Java,Linux,Antialiasing,我正在使用Java2D生成带有文本的图像。在运行Ubuntu的服务器上,字体的抗锯齿效果很差,但在OSX和Ubuntu工作站上却呈现得很漂亮。我想这两个Ubuntu安装之间的区别是xwindows和没有xwindows?大概无论如何,我猜我的渲染提示被忽略了,服务器上没有使用Java1.6亚像素抗锯齿算法 我的渲染提示如下。我正在优化垂直定位的显示器 g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_
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
但这并没有改变任何事情
有什么建议吗?谢谢。您是否已经尝试过这样的方法:
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);
}
公共组件(图形g){
@抑制警告(“未选中”)
地图桌面提示=(地图)工具包
.getDefaultToolkit().getDesktopProperty(“awt.font.desktophints”);
Graphics2D g2d=(Graphics2D)g;
if(desktopHints!=null){
g2d.addRenderingHints(桌面提示);
}
g2d.抽绳(“文本”,10,10);
}
在paintComponent()
中接收的Graphics
对象设置为默认值,不了解桌面属性(监视器类型)。查询desktophits
工具包将从底层操作系统返回有关所用硬件的信息。比较第59页的“肮脏的富客户机”