Cara vlw mesmo a ajuda a utilização do componente é uma maravilha, mas eu gostaria de lhe fazer uma pergunta sobre ele:
1 - eu tenho como pegar o foco do componente que está selecionado?
2 - o componente recebe qualquer objeto?
3 - ao usar uma função scale(2,2) por exemplo, como é feito o calculo com os pontos do poligono, seria o valor do ponto vezes 2?

a questão da rotação eu sei como fazer com o affinetransform só não estava conseguindo implementar, mas com o componente acho que já tenho uma idéia.

Muito obrigado pela sua ajuda, aprender sózinho é muito dificil sem um bom material ainda mais que a linguagem java é muito extensa.




  1. ronaldtm
    Offline
    Posts: 2299

    Publicado em: 09/04/2009 23:18:44

    hunternh:
    1 - eu tenho como pegar o foco do componente que está selecionado?



    Componente? No seu caso não vão ser polígonos?

    No exemplo que eu citei no último post, onde eu arrasto componentes, era só para ter uma idéia de como usar listeners para implementar o arraste. Como polígonos não são componentes, você vai ter que fazer um pouco diferente, ouvindo os eventos do painel principal e calculando qual o polígono clicado, ao invés de simplesmente ouvir os eventos dos componentes diretamente.

    hunternh:
    2 - o componente recebe qualquer objeto?



    Não, apenas componentes Swing (Botões, labels, etc.). Você pode até querer usar componentes para representar os polígonos, mas daí há o problema de que os componentes sempre tem a forma retangular, então seria complicado fazer com que o componente certo gerasse os eventos quando polígonos forem sobrepostos.

    hunternh:
    3 - ao usar uma função scale(2,2) por exemplo, como é feito o calculo com os pontos do poligono, seria o valor do ponto vezes 2?



    Sim, todas as coordenadas são multiplicadas por 2.

    Dá pra fazer muita coisa com transformações, mas é preciso saber um pouco de álgebra linear para compor as funções, tipo '-translate,scale,+translate' para rotacionar um objeto sobre seu centro ao invés do centro do plano cartesiano.




  1. hunternh
    Offline
    Posts: 27

    Publicado em: 09/04/2009 23:18:44

    ronaldtm:
    Componente? No seu caso não vão ser polígonos?

    No exemplo que eu citei no último post, onde eu arrasto componentes, era só para ter uma idéia de como usar listeners para implementar o arraste. Como polígonos não são componentes, você vai ter que fazer um pouco diferente, ouvindo os eventos do painel principal e calculando qual o polígono clicado, ao invés de simplesmente ouvir os eventos dos componentes diretamente.



    Realmente é com polígonos que estou trabalhando, só que já tentei usar os eventos do próprio painel e o contexto gráfico do mesmo para desenhar, mas eu não consegui resolver. O que acontecia quando eu fazia um translate com o affinetransform do contexto gráfico do painel era o seguinte: eu clicava no polígono a primeira vez dentro dele e usava o método contains para verificar se eu estava clicando dentro dele pra fazer o movimento, até ai tudo bem funcionava, mas quando eu tentava clicar uma segunda vez e arrastar não dava mais certo e se eu clicava onde o poligo estava no início funcionava, só que eu estava clicando fora do polígono. Pelo que eu li na documentação quando eu faço um translate(50,50) por exemplo esse seria o novo ponto 0.Ai que eu não entedi a situação, se o polígono estivesse setado para a posição (10,10) essa posição não seria a partir do novo ponto 0? Por isso eu já não sei mais o que fazer eu estou procurando uma solução para o meu problema já faz um bom tempo, mas eu não consigo resolver.

    ronaldtm:
    Não, apenas componentes Swing (Botões, labels, etc.). Você pode até querer usar componentes para representar os polígonos, mas daí há o problema de que os componentes sempre tem a forma retangular, então seria complicado fazer com que o componente certo gerasse os eventos quando polígonos forem sobrepostos.



    Uma coisa que eu tentei fazer usando o teu exemplo foi desenhar dentro de um painel usando o seu próprio contexto gráfico, e colocá-lo dentro do componente, mas não aparece nada do polígono somente o contorno do próprio componente. Daí o que eu fiz foi desenhar em buffer e transformar o desenho em imagem depois colocá-lo dentro do componente, só que ai já vem outros problemas e já complica um monte.
    Será que tu terias um exemplo de como fazer com painéis como eu mecionei acima ou sei lá de outra forma, porque eu não sei mais o que fazer.


    ronaldtm:
    Sim, todas as coordenadas são multiplicadas por 2.

    Dá pra fazer muita coisa com transformações, mas é preciso saber um pouco de álgebra linear para compor as funções, tipo '-translate,scale,+translate' para rotacionar um objeto sobre seu centro ao invés do centro do plano cartesiano.



    Em relação a rotação eu já fiz testes com o affinetransform e ele tem um método que faz a rotação em relação ao centro do polígono.

    Tudo o que tu tiveres de exemplo que puder me ajudar eu agradeço imensamente. Não quero ser chato, mas é que não sei a quem mais apelar.




  1. cpf
    Offline
    Posts: 9

    Publicado em: 09/04/2009 23:18:44

    Como faço para que o meu plano tenha os limites x(-80,-30) e y(-40,20)?
    Obrigada
    Cintia




  1. logan-x
    Offline
    Posts: 1

    Publicado em: 09/04/2009 23:18:44

    Ae valeu pelo código do plano cartesiano vou usar no meu TCC para amostrar gráficos e rotações




  1. ronaldtm
    Offline
    Posts: 2299

    Publicado em: 09/04/2009 23:18:44

    logan-x:
    Ae valeu pelo código do plano cartesiano vou usar no meu TCC para amostrar gráficos e rotações



    Aê, se puder, põe a referência daqui do site na bibliografia (e quem sabe uma nota especial ao Javafree nos agradecimentos... hehehe)
    _________________
    In fact, people who study design methods without also practicing design are almost always frustrated designers who have no sap in them, who have lost, or never had, the urge to shape things. Such a person will never be able to say anything sensible about "how" to shape things either. (Christopher Alexander)




  1. Relacionados

    desenhando num arquivo
    topic-10899-desenhando-num-arquivo.html

    Inserindo um Plano cartesiano.
    topic-870154-Inserindo-um-Plano-cartesiano.html

    Repintando o Grafico
    topic-852096-Repintando-o-Grafico.html

    COMO CRIAR UM TRIANGULO ?
    topic-8065-COMO-CRIAR-UM-TRIANGULO.html

    Matriz em vetor????
    topic-860062-Matriz-em-vetor.html

    applet - mapa mundi
    topic-10153-applet-mapa-mundi.html

    problemas com o método paint()
    topic-14038-problemas-com-o-metodo-paint.html

    Java 2D
    topic-858548-Java-2D.html

    Evento do mouse
    topic-10496-Evento-do-mouse.html





        Forum Main Page -> [Tutoriais] - Exemplos e Mini-Programas


Goto page 1