【发布时间】:2012-07-14 18:21:28
【问题描述】:
我正在重写 JCOmponent 的 paintComponent() 方法并在窗口中绘制文本。我在 Ubuntu 上运行并使用字体“Ubuntu Mono”(Ubuntu 文本编辑器的默认字体)。当我的 java 应用程序显示文本时,它看起来很软弱和模糊。我做错了什么?
我正在画这样的文字:
graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
graphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
Font font = new Font("Ubuntu Mono", Font.PLAIN, 18);
fontMetrics = graphics.getFontMetrics(font);
graphics.setFont(font);
graphics.drawString(value, getX(), getY() + fontMetrics.getHeight());
在我的 java 应用程序中,它看起来像这样:
在 Ubuntu 文本编辑器中,它看起来像这样:
编辑:如果使用.png 图像而不是drawText(),性能会受到影响吗?这是一个商业应用程序,而不是一个需要流畅动画的游戏。
编辑:我更改了颜色以匹配 TextEditor 的颜色,这实际上对质量有所帮助,但字符仍然很薄……你几乎看不到“.”。在 gimp 中,我可以通过创建带有正确字体和抗锯齿功能的文本来重新创建 TextEditor 外观。
【问题讨论】:
-
我感觉也许 Java(或者 Swing)没有我需要的那么多控制。我更改了 netbeans 中的字体(使用 swing)以匹配我的应用程序的字体,它看起来一样。 groan 我在这个项目中没有时间学习C++?看起来所有主要的浏览器都是用 C++ 编写的。有什么想法吗?
-
这个
LayoutTest使用TextLayout可能有用。 -
这可能是一个分辨率问题。我记得(我查这些东西已经有一段时间了),Java 以 72 DPI 运行(或者是 92 DPI??)
标签: java swing fonts antialiasing