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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top