Balanço: Como ler informação gráfica debaixo de um componente?
-
22-08-2019 - |
Pergunta
Como eu poderia "ler" informação gráfica debaixo de um componente (Vamos dizer como BufferedImage )?
Eu quero fazer essa meia translúcido componente (já feito) e aplicar efeitos gráficos no material subjacente, como desfoque tudo elementos sob esse componente ( mas não o próprio componente).
A minha abordagem é errada provável:
I tentar obter informação gráfica de instância Graphics2D dado a mim
no pintura (...) método, mas é vazio, certo?
Solução
Pergunta: é o seu alto nível de componentes (ou seja, você quer saber o que está na área de trabalho sob um JFrame), ou você só quer saber sobre componentes que estão em camadas abaixo do componente
Se 1), então é uma simples questão de pegar uma imagem com o rel java.awt.Robot
método createScreenCapture(Rectangle)
; o Rectangle
devem ser seus limites da janela neste caso.
Se 2), então se você tem uma referência para o debaixo de componente, você pode fazer uso do fato de que paint(Graphics)
não se importa onde o objeto Graphics
veio. Você pode criar um BufferedImage
, chamada createGraphics()
(no caso é esperada uma Graphics2D
), e passar o resultado para o método paint(Graphics)
do componente que você deseja capturar.
Observe que, se o componente é um contêiner, ele vai pintar suas crianças também; Isto pode ou não ser o que quiser.