Programação Gráfica em Java Tela Cheia Aula 09 Na aula passada vimos: • Java 2D 2 O que você deve ter fixado: ... que Java 2D oferece possibilidades incríveis ... que é necessário algum tempo de estudo para compreender seu funcionamento • Utilizar os objetos do tipo Shape e as curvas de 2º e 3º grau 3 O que você deve ter fixado: • Utilizar as dicas de renderização • Criar gradientes e strokes • Determinar os atributos do rendering context da classe Graphics2D 4 Na aula de hoje veremos: • A API Full Screen Exclusive Mode 5 Full-Screen Mode • full-screen é uma funcionalidade implementada no J2SE 1.4 • Permite eliminar as janelas e desenhar direto para a tela • A pintura é feita ativamente pelo programa em contraste com o que ocorre em janelas 6 Full-Screen Mode • Permite o uso de técnicas avançadas de desenho, como page flipping e multi buffering • Utiliza métodos de desenho possíveis apenas em modo full screen 7 Interação com hardware • O modo full screen é gerenciado através de um objeto java.awt.GraphicsDevice • Os possíveis graphicsDevice podem ser acessados através de uma instância de java.awt.GraphicsEnvironment • Nem todo sistema suporta o modo tela cheia; existem métodos de verificação AnimatedFontWindow.java 8 Verificando • Use isFullScreenSupported() para verificar a disponibilidade do modo tela cheia – Faça-o antes de entrar no modo tela cheia • Use setFullScreenWindow(Window w) para iniciar o modo tela cheia com a janela w; • Use esse método com parâmetro nulo para encerrar o modo tela cheia 9 Cuidados • Forçar o uso de tela cheia degrada a performance • Use try/catch para entrar ou sair do modo tela cheia • Use apenas janelas não decoradas 10 Cuidados • Não permita redimensionamento – Isso eliminaria a vantagem principal do modo tela cheia, o desenho ativo • Applets precisam de permissão para usar tela cheia 11 Java.awt.DisplayMode • Composto por: • Size: as dimensões do monitor • Bit depth: a quantidade de bits por pixel • Refresh rate: a taxa de atualização do monitor • Esses parâmetros são configuráveis • Disponível apenas em modo tela cheia DisplayModeTest.java 12 Desenho passivo e ativo • Programas tradicionais (em janelas) fazem desenho passivo... Dependem do sistema operacional. • Programas em tela cheia não precisam depender do mecanismo padrão de pintura... Ativo • Tela cheia pode não usar o método paint 13 Dicas • É aconselhável ignorar as chamadas ao método paint – Use o método setIgnoreRepaint() • Não use componentes pesados... Fique à vontade para usar os leves • Admita o desenho passivo apenas no caso de criar uma aplicação AWT ou Swing simples 14 15 16 Multi buffering • Usar vários back-buffers na seqüência de trocas (flip chain) • Útil quando o tempo gasto no desenho é maior que a taxa de atualização do monitor • Aumenta a performance percebida e não a numérica MultiBufferTest.java 17 O que você precisa saber... • Verificar se um sistema pode operar em modo full screen • Desenhar direto para a tela • Utilizar os métodos avançados de desenho 18 Na próxima aula veremos: • Jigloo GUI Builder 19