Swing: как читать графическую информацию под компонентом? - PullRequest
1 голос
/ 19 мая 2009

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

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

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

1 Ответ

1 голос
/ 19 мая 2009

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

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

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

...