Я переопределяю метод paintComponent () JCOmponent и рисую текст в окне. Я работаю в 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, создав текст с правильным шрифтом и сглаживанием.
LayoutTest
с использованиемTextLayout
может оказаться полезным. - person trashgod   schedule 15.07.2012