Slide 1 - IME-USP

Propaganda
Programação Gráfica em Java
Desenho em AWT
Aula 04
Na aula passada vimos:
• Gerenciadores básicos de leiaute
• Como e quando usar cada tipo de leiaute
• Leiaute nulo
2
O que você deve ter fixado:
• Quais são os leiautes padrão dos
contêineres mais básicos
• Como usar esses leiautes
• Composição de leiautes complexos a
partir de leiautes mais simples
3
O que você deve ter fixado:
• Alteração do leiaute de um componente
• Existência de construtores alternativos
• Utilização do leiaute nulo
4
Na aula de hoje veremos:
•
•
•
•
•
•
Sistema de coordenadas
Contexto gráfico
Cores
Formas geométricas
Fontes
Métrica de fonte
5
Sistema de coordenadas
• Coordenada x cresce
para a direita e
coordenada y cresce
para baixo
• A origem pode ser
alterada pelo método
translate(x, y)
6
Sistema de coordenadas
• Cada componente tem seu próprio
sistema de coordenadas
• O canto superior esquerdo de um
componente é a sua origem (0,0)
aula01.GUIDemo.java
7
Graphics
• Para fazer qualquer desenho em Java é
necessário um contexto gráfico
• Um contexto gráfico é uma instância da
classe Graphics
• Essa classe possui métodos para o
desenho de formas, textos e imagens
aula01.DuploCanvas.java
8
Shapes
• Graphics inclui vários métodos para
desenho de formas geométricas
• Forma são especificadas utilizando o
sistema de coordenadas do componente
• Formas são desenhadas utilizando a cor
atual do contexto gráfico
9
Métodos básicos de desenho
•
•
•
•
•
•
•
drawString
drawLine
drawRect
drawOval
drawRoundRect
draw3DRect
drawArc
– Com exceção dos dois primeiros, todos os métodos da lista
possuem um par de preenchimento tipo fillRect ou fillArc
ShapesDemo.java
10
Obtendo o contexto
• Há duas maneiras de se conseguir um
contexto gráfico:
• Acessando o parâmetro do método paint
ou update
• Usando o método de instância
getGraphics( ) do componente
FramedPanel.java
11
Cores
• Java utiliza o sistema RGB, ou seja, uma
cor é definida por três números inteiros
• Há um construtor da classe Color que
utiliza valores de ponto flutuante de 0 a 1
• Color define várias constantes para
representar as cores mais comuns
12
Sistema modal
• O sistema de utilização das cores é modal
• A todo componente associa-se uma cor de
fundo e de fonte
• A cor do contexto gráfico pode ser
configurada chamando o método
setColor() da classe Graphics
aula02.ex03.RGBColorChooser.ja
va
13
Pintando
• A maioria dos componentes faz toda a
operação de desenho em seu método
paint
• O método paint deve saber redesenhar o
componente baseado em seu estado
• Se ocorre uma mudança no estado do
componente deve-se chamar repaint()
ShapeShowPanel.java
14
Atualizando
• Uma chamada a repaint() faz com que o
sistema na verdade chame o método
update()
• update() pinta a tela com a cor de fundo e
chama paint()
• paint() faz o desenho necessário.
UpdateDemo.java
15
Fontes
• Uma fonte representa um tamanho e estilo
particular de letra
• Em Java, uma fonte é caracterizada por
um nome, um estilo e um tamanho
• Fontes disponíveis são dependentes de
sistema
16
Fontes
• Java prevê um conjunto mínimo de quatro
fontes
– Serif, SansSerif, Monospaced e Dialog
• O estilo de uma fonte é especificado
utilizando constantes da classe Font
–
–
–
–
Font.PLAIN
Font.ITALIC
Font.BOLD
Font.BOLD + Font.ITALIC
17
Fontes
• O tamanho da fonte é um inteiro,
tipicamente, variando de 10 a 36
• Todo contexto gráfico tem uma fonte
associada com tamanho padrão 12
• Podemos mudar a fonte através do
método setFont()
SystemFont.java
18
Métrica de fonte
• Classe que responde às questões sobre
as dimensões das fontes
• Quando desenhamos texto, é importante
saber quais serão suas dimensões
• Há vários métodos de instância que
informam sobre as características da fonte
analisada
19
Baseline: as linhas vermelhas
Ascent: altura da letra mais alta do estilo
Descent: máximo que uma letra pode ultrapassar para baixo da baseline
Leading: espaço extra entre o topo dos caracteres de uma linha e a
parte inferior da linha acima
Lineheight: distância entre baselines
FontWindow.java
20
O que você precisa saber...
• Obter o tratar o contexto gráfico
• Configurar cores, fontes e outras
características do contexto gráfico
• Desenhar as primitivas em um
componente
21
O que você precisa saber...
• Utilizar corretamente o sistema de
coordenadas dos componentes
• Diferenciar os métodos repaint(), update()
e paint(), além de saber quando usar cada
um deles
22
Na próxima aula veremos:
• Animação
• Técnica de desenho eficiente
(double-bufferring)
23
Download