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