Slide 1 - IME-USP

Propaganda
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
Download