Javafx: como dar formas perspectiva
o PerspectiveTransform
Conteúdo
Video: Como dibujar una lámina con vistas y perspectiva caballera (2 de 3)
Esta não é a mesma coisa que a criação de formas reais tridimensionais em sua cena graph- ele simplesmente distorce a geometria de um nó para criar um efeito de perspectiva.
o PerspectiveTransform classe funciona mapeando os cantos do retângulo delimitador da forma original para um quadrilátero arbitrária. (O retângulo delimitador é um rectângulo que contém uma forma totalmente, e um quadrilátero é toda a forma de quatro pontas.) Tudo que você precisa fornecer é o xey coordenadas de cada canto do quadrilátero, utilizando os métodos listados nesta tabela.
Video: Dibujando en isométrica
Construtor | Explicação |
---|---|
PerspectiveTransform () | Cria um novo efeito PerspectiveTransform com padrão parâmetros. |
Métodos | Explicação |
vazio setUlx (valor duplo) | Define o canto superior esquerdo coordenada x. |
vazio setUly (valor duplo) | Define o canto superior esquerdo coordenada y. |
setUrx void (valor duplo) | Define o canto superior direito coordenada x. |
vazio setUry (valor duplo) | Define o canto superior direito coordenada y. |
vazio setLlx (valor duplo) | Define o canto inferior esquerdo coordenada x. |
vazio setLly (valor duplo) | Define o canto inferior esquerdo coordenada y. |
setLrx void (valor duplo) | Define o canto inferior direito coordenada x. |
vazio setLry (valor duplo) | Define o canto inferior direito coordenada y. |
Para ilustrar como a perspectiva de transformar obras, aqui é aplicada a um tabuleiro de xadrez criado com o seguinte trecho de código:
Grupo bordo = new Group () - tamanho boolean isLight = true-int = 50-for (int rank = 0- classificação lt; 8- classificação ++) {for (arquivo int = 0- arquivo lt; 8- arquivo ++) {Rectangle r = new Rectangle (tamanho, tamanho) -r.setX (arquivo * tamanho) -r.setY (classificação * tamanho) -se (isLight) r.setFill (Color.LIGHTGRAY) -elser.setFill (Color.DARKGRAY) -isLight = isLight-board.getChildren () add (r) -.} isLight = isLight-}!
Este código utiliza um conjunto de nested para loops para desenhar as fileiras (linhas) e arquivos (colunas) do tabuleiro de xadrez usando 50 × 50 retângulos de cores alternadas. o isLight Boolean variável é utilizado para manter um registo da cor de cada quadrada este valor é invertido depois de cada rectângulo é desenhado.
o isLight valor é invertida depois de cada arquivo é desenhado para que o arquivo posterior começa com a cor oposta. A figura mostra como o tabuleiro de xadrez aparece quando exibido em uma cena.
Todo o tabuleiro de xadrez ocupa um quadrado de 400 × 400. Para adicionar perspectiva, PerspectiveTransform efeito foi criado que mapeia o 400 × 400 tabuleiro quadrado para um quadrilátero com coordena o seguinte canto:
Canto | x originais, y | Novos x, y |
---|---|---|
superior esquerdo | 0, 0 | 100, 100 |
Canto superior direito | 400, 0 | 450, 100 |
inferior Esquerdo | 0, 400 | 0, 300 |
Inferior direito | 400, 400 | 400, 300 |
O código para realizar esta transformação parece com isso:
PerspectiveTransform e = new PerspectiveTransform () - e.setUlx (100) - // superior lefte.setUly (100) -e.setUrx (450) - // superior righte.setUry (100) -e.setLlx (0) - / / Baixa lefte.setLly (300) -e.setLrx (400) - // Baixa righte.setLry (300) -board.setEffect (e) -
Esta figura mostra como o tabuleiro de xadrez parece quando essa perspectiva transformação é aplicada.