boas pessoal
estou o usando drawLine()
pra desenhar uma linha , mas a linha do drawline()
é meio fina, queria ela mais preenchida e grossa!
g.drawLine(xPosInicial, yPosInicial, xPosAnterior,
yPosAnterior);
boas pessoal
estou o usando drawLine()
pra desenhar uma linha , mas a linha do drawline()
é meio fina, queria ela mais preenchida e grossa!
g.drawLine(xPosInicial, yPosInicial, xPosAnterior,
yPosAnterior);
Você precisa efetuar o cast do seu objeto Graphics para java.awt.Graphics2D e chamar setStroke com um objeto java.awt.BasicStroke que tenha a largura desejada, antes de chamar drawLine, é óbvio.
Dica: no JDK existe um diretório “demo” que contém as fontes de um programa chamado Java2Demo. Esse programa tem todas essas técnicas (preenchimento de linhas grossas etc.), é só ler os fontes.
[quote=entanglement]Você precisa efetuar o cast do seu objeto Graphics para java.awt.Graphics2D e chamar setStroke com um objeto java.awt.BasicStroke que tenha a largura desejada, antes de chamar drawLine, é óbvio.
Dica: no JDK existe um diretório “demo” que contém as fontes de um programa chamado Java2Demo. Esse programa tem todas essas técnicas (preenchimento de linhas grossas etc.), é só ler os fontes. [/quote]
ja me eskecia do Stroke…
valeu pela dica…
é que so tava usando graphics e nao graphics2D…
valeu…beleza!
De modo geral, a primeiríssima coisa que você faz no tratamento de paint ou paintComponent é efetuar um cast para Graphics2D.
Na verdade, não só o cast, mas também a cópia:
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g.create();
//Código de pintura aqui
g2d.dispose();
}
Na verdade, não só o cast, mas também a cópia:
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g.create();
//Código de pintura aqui
g2d.dispose();
}
[/quote]
nao basta apenas chamar o super?
[code]
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (existeLinha) {
g.drawLine(x1, y1, x2, y2);
}
}[/code]
Na verdade, não só o cast, mas também a cópia:
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g.create();
//Código de pintura aqui
g2d.dispose();
}
[/quote]
nao basta apenas chamar o super?
[code]
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (existeLinha) {
g.drawLine(x1, y1, x2, y2);
}
}[/code][/quote]
Não basta.
Se voce não efetuar a cópia voce vai ter efeitos estranhos na sua tela. Em alguns casos voce não vai perceber, mas em alguns casos realmente vai.
A ideia de fazer uma “cópia” do objeto g (Graphics) é a seguinte: você normalmente faz algumas coisas que alteram o estado dele (como setStroke). Como é chato você desfazer tudo antes de você sair da rotina, então você faz uma cópia. Essa tal “cópia” não copia os pixels da tela, apenas algumas configurações (como, por exemplo, o Stroke). Como o Graphics é usado por todos os métodos que pintam ou desenham na tela, você sempre deve deixá-lo “do jeitinho que o encontrou”, sob pena de ter algumas coisas estranhas na tela.
A cópia e o super tem papéis diferentes.
O super serve para você chamar a pintura padrão do seu componente. No caso de um JPanel, por exemplo, ele irá apagar o conteúdo e pintar a cor de fundo do painel.
A cópia serve para o que o pessoal já explicou.
falando em efeitos estranhos…ja começou a aparecer um…
valew pela dica…e já o resolvi…
esta cadeira de computaçao grafica e interfaces ainda vai dar que falar!!
ola galera me desculpe se eu tiver errado mas sou novato em Java e estou aprendendo com o professor google!!
mas estava fazendo um exercicio e consegui fazer uma linha grossa usando o DrawLine();
com loop
veja isso
public class Awt_graphics_4 extends JPanel
{
public void paintComponent( Graphics g)
{
int width = getWidth();
int height = getHeight();
//variaeis para o laço
int x=0;
int y=0;
super.paintComponent(g);
int pulaLinha=0;
while(pulaLinha<=240)
{
g.drawLine(height,x,y,width);
pulaLinha=pulaLinha+20;
x=x+1;
y= y+1;
}
}
public static void main(String[]sagrs)
{
//isntancia da minha classe
Awt_graphics_4 Panel = new Awt_graphics_4();
//cria um frame
JFrame aplicaçao = new JFrame();
//caracteristicas do JFrame
aplicaçao.setDefaultCloseOperation(aplicaçao.EXIT_ON_CLOSE);
aplicaçao.add(Panel);
aplicaçao.setSize(250, 250);
aplicaçao.setTitle("Desenhando X");
aplicaçao.setVisible(true);
}
}
Acho que o jeito mais fácil é configurar a caneta:
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g.create();
g2d.setStroke(new BasicStroke(4.0)); //4 pixels de largura
g2d.drawLine(0,0,200,200);
g2d.dispose();
}
Dá uma lida: Ponto V! - Pintando no Java 2D