Swing: как читать графическую информацию под компонентом?
Как я мог "прочитать" графическую информацию под компонентом(скажем, как BufferedImage)?
Я хочу сделать этот компонент полупрозрачным (уже готовым) и применить графические эффекты к базовым элементам, таким как размытие всех элементов под этим компонентом (но не самого компонента).
Мой подход, вероятно, неверен:
Я пытаюсь получить графическую информацию из экземпляра Graphics2D, переданного мне в методе paint(...), но он пустой, верно?
1 ответ
Вопрос: ваш компонент верхнего уровня (то есть вы хотите знать, что находится на рабочем столе под JFrame), или вы просто хотите узнать о компонентах, которые расположены под компонентом?
Если 1), то просто сделать скриншот с java.awt.Robot
метод createScreenCapture(Rectangle)
; Rectangle
должны быть ваши границы окна в этом случае.
Если 2), то, если у вас есть ссылка на компонент внизу, вы можете использовать тот факт, что paint(Graphics)
не волнует, где Graphics
объект пришел из. Вы можете создать BufferedImage
, вызов createGraphics()
(в случае Graphics2D
ожидается), и передать результат paint(Graphics)
метод компонента, который вы хотите захватить.
Обратите внимание, что если компонент является контейнером, он также будет рисовать свои дочерние элементы; это может или не может быть то, что вы хотите.