Преобразовать область JPanel в BufferedImage - PullRequest
2 голосов
/ 14 января 2010

Мне нужно преобразовать определенную область jpanel в bufferedImage или другой формат для отображения в другой jpanel.

К настоящему времени я видел только те коды, которые преобразуют всю jpanel в bufferedImage, нов моем случае мне нужна только область внутри jpanel.

спасибо

Ответы [ 4 ]

2 голосов
/ 14 января 2010

создайте BufferedImage с запрошенным размером для получения изображения.
Получите Graphics2D для рисования на этом изображении и позвольте JPanel рисовать на нем.

    JPanel panel = ...
    BufferedImage image = new BufferedImage(200, 200, TYPE_INT_ARGB);
    Graphics2D gg = image.createGraphics();
    try {
        gg.translate(-100, -20);  // start point of region negated
        panel.paint(gg);
    } finally {
        gg.dispose();
    }
2 голосов
/ 14 января 2010

Поскольку у вас уже есть код для преобразования всей вещи в BufferedImage, вы можете использовать его, а затем вызвать getSubImage для полученного BufferedImage, чтобы получить субрегион.

1 голос
/ 14 января 2010

К настоящему времени я видел только коды, которые преобразуют всю jpanel в bufferedImage, но в моем случае мне нужна только область внутри jpanel.

Затем возьмите это изображение и перекрасьте нужную область в новое изображение, и все готово.

0 голосов
/ 14 января 2010

Самым простым будет, вероятно, Robot.createScreenCapture ()

Вам нужно будет перевести систему координат панели в систему координат экрана. См. Component.getBounds () и Component.getLocationOnScreen () .

...