pessoal estou precisando ler um dxf e montar ele em algo visual. Escolhi o java 2D mas não sei nada dele alguem pode me ajudar?
como fazer um quadrado no java 2D? Ele é em applet? alguma luz,dicas obrigado.
Veja os seguintes artigos do ponto V!
Escolhendo onde desenhar
Conhecendo o JFrame
Uma visão rápida sobre o Java 2D
Pintando no java 2D
O fantasma do Pacman
Trabalhando com imagens
Se precisar fazer algo animado, veja também:
O loop de animação
A primeira animação
Desenho direto - Active Rendering
Outra boa fonte é o livro Killer Game Programming in Java, disponível online em:
http://fivedots.coe.psu.ac.th/~ad/jg/
vou querer usar em applet mesmo tem algum exemplo tbm de applet?
Sim, no primeiro artigo “escolhendo onde desenhar”.
O resto é tudo igual.
Basta sobrescrever o paint do JApplet, ao invés do paint do JFrame. Mas tudo que funciona pra um, funciona também para o outro.
[quote=ViniGodoy]Veja os seguintes artigos do ponto V!
O fantasma do Pacman
[/quote]
Se eu tivesse lido esse artigo a uns 2 anos atrás meu fantasma do pacman não seria uma bola vermelha horrorosa…
Até o pacman desenhei bonitinho, usei coordenadas polares pra definir os pontos, tudo ficou desenhado bonitinhamente… mas o fantasma ficou uma bola mesmo UHAUHAuhahuAuhA
Sim, no primeiro artigo “escolhendo onde desenhar”.
O resto é tudo igual.
Basta sobrescrever o paint do JApplet, ao invés do paint do JFrame. Mas tudo que funciona pra um, funciona também para o outro.[/quote]
nesse artigo não possui “como” no netbeans crio uma aplicaçaõ web e crio a classe de applet ou crio um projeto separado para o applet e depois importo ele em um outro projeto?
Não. Os artigos referem-se à linguagem Java, não à IDEs específicas.
Mas isso não deve ser muito difícil de descobrir.
tem como vc me dar um exemplo de um applet que apenas desenha 1 linha reta?
eu tive olhando o .class da applet tem que estar na mesmo diretorio do jsp mas como fazer ele pegar o .class em outro diretorio pois na programação mesmo é feita no .java que esta em um pacote
Cara, segue um tutorial de como fazer um applet primeiro, depois tente com Java2D.
é porque eu uso netbeans e não da pra por uma classe no diretorio do html ele cai para o pacote padrão. ao rodar a aplicação web da erro no applet e fica tudo preto porque na verdade o .class gerado fica em
eu estou com um html de teste com o <applet e um projeto no netbeans basico apenas com classes ao dar F9 pego o .class e jogo na pasta do html e ta funcionando o problema é demora para testar todo hora mas vamos lá…
estou tendo problemas em antalias o 2D ja tem? eu vi uma classe de terceiro que cria até 4 niveis de antialias
por exemplo
g.drawLine(10,10,300,0);//geraria uma linha cerrilhada pois não é reta. Como posso aplicar antialias nessa linha?
em qual ambiente de desenvolvimento vocês usam para programar os applets e testar no browser ou em algum visualizador?
isso meu ajudou muito
Eu programo no Eclipse. Ele te um visualizador (usa o do próprio java).
E as vezes ponho no browser também para ver como está ficando.
ja estou avançado na leitura do arquivo DXF agora é so por pra desenhar no metodo paint
@Override
public void paint(Graphics g) {
List<ArrayList> a = lista;
for (int i = 0; i < a.size(); i++) {
if (a.get(i).get(0).toString().equals("LINE")) {
g.drawLine(Integer.parseInt(a.get(i).get(1).toString()),
Integer.parseInt(a.get(i).get(2).toString()),
Integer.parseInt(a.get(i).get(3).toString()),
Integer.parseInt(a.get(i).get(4).toString()));
}
}
}
pergunto:
o dxf trabalha com valores flutuantes exemplo 0.00000000000000
a maiorira dos metodos que eu vi do draw recebe int!! qual metodo devo trabalhar para montar uma linha,circulo etc… com valores flutuantes?
Você leu os artigos que te indiquei?
Pelo visto não, pois dá para ver que você ainda nem sequer está fazendo a cópia do contexto gráfico.
O java 2D fornece um método chamado draw(Shape). Ele permite que você desenhe uma forma.
Entre essas formas está a classe Line2D. Que pode ser instanciada com precisão de Double ou Float:
Line2D linha = new Line2D.Float(10.2f, 11.5f, 15.2f, -11.5f);
graphics.draw(linha);
Recomendo fortemente que você leia os artigos e dê uma boa estudada no funcionamento do Java2D, antes de sair desenhando. É uma boa prática conhecer a API que você usa.
Os artigos que te enviei explicam como usar essas classes. Há exemplos no artigo do fantasma do pacman.
opa deu certo
public void paint(Graphics g) {
List<ArrayList> a = lista;
for (int i = 0; i < a.size(); i++) {
if (a.get(i).get(0).toString().equals("LINE")) {
Graphics2D g2d = (Graphics2D) g.create();
Line2D linha = new Line2D.Float(Float.parseFloat(a.get(i).get(1).toString()),
Float.parseFloat(a.get(i).get(2).toString()),
Float.parseFloat(a.get(i).get(3).toString()),
Float.parseFloat(a.get(i).get(4).toString()));
g2d.draw(linha);
g2d.dispose();
}
}
}
Melhor fazer uma cópia só:
[code]public void paint(Graphics g) {
List<ArrayList> a = lista;
Graphics2D g2d = (Graphics2D) g.create();
for (int i = 0; i < a.size(); i++) {
if (a.get(i).get(0).toString().equals("LINE")) {
Line2D linha = new Line2D.Float(Float.parseFloat(a.get(i).get(1).toString()),
Float.parseFloat(a.get(i).get(2).toString()),
Float.parseFloat(a.get(i).get(3).toString()),
Float.parseFloat(a.get(i).get(4).toString()));
g2d.draw(linha);
}
}
g2d.dispose();
}
[/code]
Por que sua lista não é de floats? Não é ruim ficar fazendo parse a cada iteração do loop?