Компонент, нарисованный к изображению, отрисовывает уродливые шрифты - PullRequest
0 голосов
/ 28 января 2011

Когда я рендеринг компонента Swing на изображение, шрифты отличаются от того, когда компонент отображается на экране. Вот изображение, показывающее разницу:

enter image description here

А это код:

public static BufferedImage renderComponent(Component component) {
    int width = component.getWidth();
    int height = component.getHeight();
    BufferedImage buffImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
    Graphics2D g = (Graphics2D) buffImage.getGraphics();
    g.setFont(component.getFont());
    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
    component.paint(g);
    g.dispose();
    return buffImage;
}

Что я должен изменить, чтобы сделать идеальный снимок экрана компонента Swing? (Приложение работает на Windows 7)

Ответы [ 3 ]

1 голос
/ 28 января 2011

Что я должен изменить, чтобы сделать идеальный снимок экрана компонента Swing?

Полагаю, вы не должны предоставлять подсказки для рендеринга.

Я использую класс Screen Image для этого (это в основном ваш код с несколькими другими встроенными функциями).

1 голос
/ 29 января 2011

После сравнения класса ScreenImage (предложенного camickr ) я нашел причину проблемы.Если я создаю BufferedImage с типом, установленным в TYPE_INT_RGB вместо TYPE_INT_ARGB, шрифты в порядке.

0 голосов
/ 28 января 2011

Класс Робот

public synchronized BufferedImage createScreenCapture(Rectangle screenRect)

...