Предотвратить изменение размеров окон - PullRequest
0 голосов
/ 05 января 2012

Я пытаюсь делать периодические (многократно) скриншоты окна неактивного или фонового приложения.У меня есть прямоугольник окна, но если пользователь меняет прямоугольник окна, я получаю скриншот с черными оттенками, соответствующими изменениям размера.Я могу получить прямоугольник каждый раз перед тем, как сделать снимок экрана, но это замедляет мой код, поэтому я хочу предотвратить изменение размера окна пользователем или есть ли какой-либо триггер события, когда происходит изменение размера окна?Я использую Java с JNA.Какие-либо предложения?Спасибо

Ответы [ 2 ]

2 голосов
/ 05 января 2012

Вы можете позвонить frame.setResizable(false), чтобы отключить изменение размера окна.Вы также можете сделать это:

frame.addComponentListener(new ComponentAdapter() {
    public void componentResized(ComponentEvent e) {
        // Update rectangle
    }
}

(Предполагая, что здесь это кадр java.awt.Frame или javax.swing.JFrame)

0 голосов
/ 06 января 2012

Я сделал то же самое, чтобы записать скринкаст приложений, использующих компоненты SWT. Есть 1 слушатель, который может выполнить эту работу:

public class ShellControlsListener implements ControlListener {
    @Override
    public void controlMoved(ControlEvent e) {
         // You will need to retrieve new coordinates
    }
@Override
    public void controlResized(ControlEvent e) {
         // Do you work here: retrieve new bounds
    }
}

Я предположил, что вы можете использовать такого типа слушателя с awt / swing.

Получение оконных координат и границ не является реальной проблемой при 2 ~ 4 FPS. Я могу записывать и кодировать со скоростью 25 кадров в секунду, используя java.awt.Robot. (Получение границ окна происходит быстрее по сравнению с Robot.createScreenCapture (java.awt.Rectangle).

Если вам действительно нужны представления, вам нужно получить границы только тогда, когда ваше окно перемещается или изменяется; нет необходимости устанавливать размер окна не изменяемым (если вы не хотите использовать снимки экрана для создания видео, поскольку в этом случае все снимки экрана должны иметь одинаковые размеры).

...