TA345/531 TP257 Informática Aplicada à Engenharia de Alimentos.
Aula 7 – Parte A: Apresentação Gráfica
A base para tudo que é desenhado na tela de uma aplicação é o contexto gráfico, em Java, um objeto da classe Graphics, do pacote java.awt. São nesses objetos que linhas, retângulos, círculos e outros elementos são desenhados, compondo a apresentação visual da aplicação gráfica.
Todo componente gráfico tem associado a si um contexto gráfico e alguns métodos-chave para manipulá-lo. A um objeto da classe Component, pode-se aplicar os métodos: getGraphics( ), que permite obter uma referência para um objeto da classe Graphics, paint(Graphics), que determina o que é feito no contexto gráfico e repaint( ), que solicita uma atualização no contexto gráfico.
Para determinar o conteúdo gráfico do contexto, os métodos da classe Graphics são utilizados. Esses métodos incluem facilidades para definição de cores, fontes e figuras geométricas. O sistema de coordenadas para definir a posição do desenho no contexto tem origem no canto superior esquerdo da área gráfica, tomando valores inteiros para x e y, representando quantidades de pixels na horizontal e na vertical, respectivamente.
A linguagem Java contém um número grande de primitivas gráficas que possibilitam ao usuário criar gráficos facilmente e rapidamente. A seguir, uma pequena relação dos métodos mais úteis da classe Graphics:
dispose ( )
limpa contexto corrente do objeto.
clearRect (int x, int y, int width, int height)
limpa a área do retângulo especificado com a cor atual.
int x → coordenada x inicial
int y → coordenada y inicial
int width → largura
int height → altura
drawLine (int x1, int y1, int x2, int y2)
desenha uma linha.
int x1 → coordenada x inicial
int y1 → coordenada y inicial
int x2 → coordenada x final
int y2 → coordenada y final
drawRect (int x, int y, int width, int height)
desenha um retângulo.
int x → coordenada x inicial
int y → coordenada y inicial
int width → largura
int height → altura
drawRoundRect (int x, int y, int width, int height, int arcWidth, int arcHeight)
desenha um retângulo com as bordas arredondadas.
int x → coordenada x inicial
int y → coordenada y inicial
int width → largura
int height → altura
int arcWidth → diâmetro horizontal do arco nos 4 cantos
int arcHeight → diâmetro vertical do arco nos 4 cantos
drawOval (int, x, int y, int width, int height)
desenha um círculo
int x → coordenada x inicial
int y → coordenada y inicial
int width → largura
int height → altura
draw3DRect (int x, int y, int width, int height, boolean raised)
desenha um retângulo em 3 dimensões.
int x → coordenada x inicial
int y → coordenada y inicial
int width → largura
int height → altura
boolean raised → se True retângulo aparece aumentado, senão diminuído.
drawPolygon (int xPoints[ ], int yPoints[ ], int nPoints)
desenha um polígono. Qualquer polígono criado tem que conter um ponto que o fecha. Java não cria polígonos fechados automaticamente, então tenha sempre certeza que os pontos inicial e final são iguais.
int xPoints[ ] → array de coordenadas x
int yPoints[ ] → array de coordenadas y
int nPoints[ ] → número de pontos
drawString (String str, int x, int y)
desenha string com a fonte e tamanho correntes.
String str → string a ser desenhada
int x → coordenada x
int y → coordenada y
fillRect (int x, int y, int width, int height)
preenche um retângulo com a cor corrente.
int x → coordenada x inicial
int y → coordenada y inicial
int width → largura
int height → altura
fillRoundRect (int x, int y, int width, int height, int arcWidth, int arcHeight)
preenche um retângulo com bordas arredondadas com a cor corrente.
int x → coordenada x inicial
int y → coordenada y inicial
int width → largura
int height → altura
int arcWidth → diâmetro horizontal do arco nos 4 cantos
int arcHeight → diâmetro vertical do arco nos 4 cantos
fill3DRect (int x, int y, int width, int height, boolean raised)
preenche um retângulo 3D com a cor corrente.
int x → coordenada x inicial
int y → coordenada y inicial
int width → largura
int height → altura
boolean raised → se True retângulo aparece aumentado, senão diminuído.
fillOval (int x, int y, int width, int height)
preenche um círculo com a cor corrente.
int x → coordenada x inicial
int y → coordenada y inicial
int width → largura
int height → altura
fillPolygon (int xPoints[ ], int yPoints[ ], int nPoints)
preenche um polígono com a cor corrente.
int xPoints[ ] → array de coordenadas x
int yPoints[ ] → array de coordenadas y
int nPoints[ ] → número de pontos
Color getColor ( )
retorna a cor corrente.
setColor (Color c)
ajusta a cor corrente.
Color c → nova cor corrente
Font getFont ( )
retorna a fonte corrente.
setFont(Font f)
ajusta a fonte corrente.
Font f → nova fonte corrente
Desenhando um Retângulo
Agora, utilize o seguinte código e observe a criação de retângulos com e sem preenchimento.
{...
g.drawRect(35,15,125,150);//desenha apenas o contorno do
retângulo
g.setColor (Color.yellow);//define a cor de Graphics
g.fillRect(200,30,95,170);//desenha um retângulo com
preenchimento
...}
Você pode obter algo como:
Exemplo - retângulo:
import java.applet.*;
import java.awt.*;
// <APPLET CODE = "retangulo.class" WIDTH=400 HEIGHT=400></APPLET>
public class retangulo extends Applet
{
public void init()
{
}
public void paint (Graphics g)
{
int i;
int sx = 10;
int sy = 10;
for (i = 9; i >= 0; i--)
{
g.fillRect(sx + (i*10), sy + (i*10), i*20, i*20);
if (i == 0) g.setColor(Color.black);
else if (i == 1) g.setColor(Color.blue);
else if (i == 2) g.setColor(Color.cyan);
else if (i == 3) g.setColor(Color.yellow);
else if (i == 4) g.setColor(Color.gray);
else if (i == 5) g.setColor(Color.green);
else if (i == 6) g.setColor(Color.magenta);
else if (i == 7) g.setColor(Color.orange);
else if (i == 8) g.setColor(Color.pink);
else if (i == 9) g.setColor(Color.red);
}
}
}
Desenhando Arcos, Círculos, e Ovais
Utilize os seguintes comandos:
{...
g.drawOval(85,100,30,30);//oval vazio
g.fillOval(40,40,120,150); //oval cheio
g.drawArc(35,60,125,180,20,80);//desenha contorno de arco
g.fillArc(60,130,80,40,180,180);//desenha arco com
preenchimento
...}
Modifique os parâmetros e combine seus efeitos para fazer desenhos. Divirta-se! Que tal:
Exemplo - circulo:
import java.applet.*;
import java.awt.*;
// <APPLET CODE = "circulo.class" WIDTH=400 HEIGHT=400></APPLET>
public class circulo extends Applet
{
public void init()
{
}
public void paint (Graphics g)
{
g.setColor(Color.black);
g.fillOval(10,20,30,40);
g.setColor(Color.blue);
g.fillOval(60,30,200,40);
g.setColor(Color.cyan);
g.fillOval(120,90,170,120);
g.setColor(Color.gray);
g.fillOval(15,160,100,78);
g.setColor(Color.green);
g.fillOval(300,300,130,55);
g.setColor(Color.lightGray);
g.fillOval(240,0,40,300);
g.setColor(Color.magenta);
g.fillOval(100,200,150,200);
g.setColor(Color.orange);
g.fillOval(150,250,70,170);
g.setColor(Color.pink);
g.fillOval(10,50,200,90);
g.setColor(Color.red);
g.fillOval(320,70,80,180);
g.setColor(Color.yellow);
g.fillOval(200,160,300,40);
g.setColor(Color.green);
g.fillOval(10,250,250,50);
g.setColor(Color.blue);
g.fillOval(40,90,20,400);
g.setColor(Color.magenta);
g.fillOval(60,70,50,80);
}
}
Exemplo - desenho:
import java.applet.*;
import java.awt.*;
// <APPLET CODE = "desenho.class" WIDTH=400 HEIGHT=400></APPLET>
public class desenho extends Applet
{
Color marron;
Color verde1, verde2, verde3;
public void init()
{
}
public void paint (Graphics g)
{
g.setColor(Color.blue);
g.fillRect(0,0,400,400);
g.setColor(Color.green);
g.fillRect(0,300,400,100);
// Desenhar arvore
marron = new Color(149,123,103);
g.setColor(marron);
g.fillRect(50,200,40,100);
verde1 = new Color(142,183,91);
verde2 = new Color(42,168,64);
verde3 = new Color(58,175,111);
g.setColor(verde1);
g.fillOval(45,120,50,50);
g.setColor(verde3);
g.fillOval(70,120,50,50);
g.setColor(verde2);
g.fillOval(20,120,50,50);
g.setColor(verde3);
g.fillOval(30,100,50,50);
g.setColor(verde1);
g.fillOval(30,160,50,50);
g.setColor(verde2);
g.fillOval(45,85,50,50);
g.setColor(verde3);
g.fillOval(60,100,50,50);
g.setColor(verde2);
g.fillOval(40,90,50,50);
g.setColor(verde2);
g.fillOval(20,140,50,50);
g.setColor(verde1);
g.fillOval(70,140,50,50);
g.setColor(verde1);
g.fillOval(50,90,50,50);
g.setColor(verde3);
g.fillOval(60,160,50,50);
//desenhar casa
g.setColor(Color.white);
g.fillRect(200,200,100,100);
int[] xPoints = {180, 250, 320};
int[] yPoints = {200, 150, 200};
g.setColor(Color.red);
g.fillPolygon(xPoints,yPoints,3);
g.setColor(Color.gray);
g.fillRect(215,230,30,70);
g.fillRect(258,235,30,30);
g.setColor(Color.darkGray);
g.drawRect(259,236,28,28);
g.drawLine(273,236,273,264);
g.drawRect(216,231,28,68);
g.fillOval(238,267,4,4);
g.setColor(Color.yellow);
g.fillOval(300,50,60,60);
}
}
Muito mais em: procure por classe Graphics ( ) em: http://www.javasoft.com/doc/index.html
|
Última atualização: 08/abril/2009