Я пытаюсь сделать периодические (неоднократные) снимки экрана окна неактивного или фонового приложения. У меня есть прямоугольник окна, но если пользователь меняет прямоугольник окна, я получаю скриншот с черными оттенками, соответствующими изменениям размера. Я могу получить прямоугольник каждый раз, прежде чем снимать снимок экрана, но это делает мой код медленнее, поэтому я хочу, чтобы пользователь не изменял размер своего окна или есть ли триггер событий при изменении размера окна? Я использую Java
с JNA
. Какие-либо предложения? СпасибоПредотвращение изменения размера окон
ответ
Я сделал то же самое для записи видео из приложений, использующих компоненты SWT. Существует один слушатель, который мог бы сделать работу:
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 FPS с помощью java.awt.Robot. (Получение границ окна выполняется быстро по сравнению с Robot.createScreenCapture (java.awt.Rectangle).
Если вам действительно нужны представления, вам нужно только получить границы, когда ваше окно перемещено или изменено, нет необходимости устанавливать окно не изменяйте размер (если вы не хотите использовать свои скриншоты для создания видео, потому что в этом случае все скриншоты должны иметь одинаковые размеры).
Не могли бы вы помочь мне записать конкретное окно на 25 FPS? и Как вы не изменили размер других окон приложения? Потому что я пытался получить 25 экранов в секунду, но я не мог этого сделать? – Ahamed
В основном приложение составлено из 1 фонового потока, который захватывает скриншоты с использованием awt Robot (захват каждые 1/частота кадров). Затем изображение передается видеокодеру (например, Xuggle). Третий компонент - это ControlListener, который обнаруживает изменение размера приложения; но поскольку я не использовал JNA, я не могу записать не-Java-окно. Единственный способ добиться 25 FPS - это кодирование и запись видео на лету. На данный момент я могу записать только одно окно, но это достаточно хорошо для моих нужд. Но я сталкиваюсь с проблемами исполнения, когда окно слишком велико (мне приходится уменьшать частоту кадров). – zeropouet
Спасибо большое !!!! – Ahamed
Вы можете позвонить frame.setResizable(false)
, чтобы отключить изменение размера окна. Вы также можете сделать это:
frame.addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent e) {
// Update rectangle
}
}
(Предполагая, что здесь этот кадр является java.awt.Frame
или javax.swing.JFrame
)
Я могу предотвратить или отреагировать на изменения размера окна приложения, но хочу узнать другие изменения размера окна или приложения. – Ahamed
В зависимости от вашей ОС может возникнуть вызов JNA, который вы можете сделать, чтобы прослушивать изменение размеров окон в других приложениях. Но я согласен с тем, что запрос текущего прямоугольника окна должен быть быстрым по сравнению с захватом пикселей. Сколько замедления вы наблюдаете, когда вы каждый раз запрашиваете прямоугольник? –
В настоящее время я неоднократно делаю вызов 'JNA' каждый раз. Захват пикселей потребляет время, но я не могу его опустить, поскольку содержимое внутри окна продолжает меняться. Я настраиваю код, чтобы работать лучше, поэтому подумал об удалении этого прямоугольника окна 'JNA', который был бы бесполезен, если пользователь не изменил размер окна. – Ahamed
- 1. Предотвращение изменения размера окна браузера
- 2. Предотвращение самозагрузка Navbar изменения размера
- 3. Предотвращение изменения размера с помощью формы
- 4. Предотвращение изменения размера навигационной панели на Bootstrap
- 5. Предотвращение изменения размера дочернего элемента в сетке
- 6. Предотвращение изменения размера изображения с исходным изображением
- 7. Предотвращение изменения размера UIImage для UIButton
- 8. Предотвращение изменения размера окна страницы в WPF
- 9. Предотвращение изменения размера хрома PDF для печати
- 10. Предотвращение изменения размера ячейки в excel
- 11. Предотвращение изменения размера содержимого в WPF
- 12. Предотвращение изменения размера шрифта в приложении
- 13. Предотвращение изменения размера GridviewColumn в Devexpress
- 14. Предотвращение изменения стиля адаптируемой веб-страницы после изменения размера (JavaScript)
- 15. Предотвращение открытия окон
- 16. Предотвращение блокировки всплывающих окон
- 17. Предотвращение фокусировки окон python
- 18. Предотвращение изменения пользователем шрифта
- 19. Предотвращение изменения подзаголовков
- 20. Предотвращение окон форм datagridview для изменения строки после редактирования ячейки
- 21. Предотвращение изменения таблицы
- 22. Предотвращение пополнения окон от _blank
- 23. Предотвращение открытия всплывающих окон динамически
- 24. определение размера восстановленных окон
- 25. Предотвращение изменения размера кнопки в контентном значении div в IE
- 26. Предотвращение части SplitPane от изменения размера в javafx
- 27. Предотвращение изменения размера при настройке UIImage в UIImageView
- 28. Предотвращение UITableViewCell.backgroundView От изменения размера изображения при изменении ориентации
- 29. предотвращение изменения размера изображения при отображении на странице
- 30. Предотвращение изменения размера шрифта Android Webview (вычисляемый стиль)
Предотвращение изменения размера ваших окон в их окнах будет раздражать их. что? – rossum
Или есть ли событие изменения размера окна? Я мог бы выбрать один из этих двух. Одна профилактика, обработка второго события. :) – Ahamed
Получает ли прямоугольник действительно ваш код медленнее по сравнению с захватом пикселей? Немного удивительно ... в любом случае я согласен с @rossum. –