Swing: как читать графическую информацию под компонентом?

Как я мог "прочитать" графическую информацию под компонентом(скажем, как BufferedImage)?

Я хочу сделать этот компонент полупрозрачным (уже готовым) и применить графические эффекты к базовым элементам, таким как размытие всех элементов под этим компонентом (но не самого компонента).

Мой подход, вероятно, неверен:
Я пытаюсь получить графическую информацию из экземпляра Graphics2D, переданного мне в методе paint(...), но он пустой, верно?

1 ответ

Решение

Вопрос: ваш компонент верхнего уровня (то есть вы хотите знать, что находится на рабочем столе под JFrame), или вы просто хотите узнать о компонентах, которые расположены под компонентом?

Если 1), то просто сделать скриншот с java.awt.Robot метод createScreenCapture(Rectangle); Rectangle должны быть ваши границы окна в этом случае.

Если 2), то, если у вас есть ссылка на компонент внизу, вы можете использовать тот факт, что paint(Graphics) не волнует, где Graphics объект пришел из. Вы можете создать BufferedImage, вызов createGraphics() (в случае Graphics2D ожидается), и передать результат paint(Graphics) метод компонента, который вы хотите захватить.
Обратите внимание, что если компонент является контейнером, он также будет рисовать свои дочерние элементы; это может или не может быть то, что вы хотите.

Другие вопросы по тегам