JavaFX: Como dar Shapes Perspective
o PerspectiveTransform classe permite distorcer uma forma para que ele parece ter um efeito tridimensional.
Esta não é a mesma coisa que a criação de formas reais tridimensionais na sua cena graph- simplesmente distorce a geometria de um nó para criar um efeito de perspectiva.
o PerspectiveTransform classe funciona mapeando os cantos do rectângulo delimitadora da forma original a 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, usando os métodos listados nesta tabela.
Construtor | Explicação |
---|---|
PerspectiveTransform () | Cria um novo efeito PerspectiveTransform com DefaultParameters. |
Métodos | Explicação |
vazio setUlx (valor duplo) | Define o canto superior esquerdo coordenada x. |
setUly void (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. |
setLly void (valor duplo) | Define o canto inferior esquerdo coordenada y. |
setLrx void (valor duplo) | Define o canto inferior direito coordenada x. |
setLry void (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-}!
Esse código usa um conjunto de nested para loops para elaborar as fileiras (linhas) e arquivos (colunas) de tabuleiro de xadrez usando 50x50 retângulos de cores alternadas. o isLight variável booleana é usado para manter o controle da cor de cada quadrada este valor é invertido após cada retângulo é desenhado.
o isLight valor é invertido após cada arquivo é desenhado para que o arquivo subsequente 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 400x400. Para adicionar perspectiva, PerspectiveTransform efeito foi criado que mapeia o tabuleiro quadrado 400x400 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) - // lefte.setUly superior (100) -e.setUrx (450) - // righte.setUry superior (100) -e.setLlx (0) - / / Baixa lefte.setLly (300) -e.setLrx (400) - // righte.setLry Baixa (300) -board.setEffect (e) -
Esta figura mostra como o tabuleiro de xadrez parece quando essa perspectiva transformação é aplicada.