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.

A classe PerspectiveTransform
ConstrutorExplicação
PerspectiveTransform ()Cria um novo efeito PerspectiveTransform com DefaultParameters.
MétodosExplicaçã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.

image0.jpg

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:

Cantox originais, yNovos x, y
superior esquerdo0, 0100, 100
Canto superior direito400, 0450, 100
inferior Esquerdo0, 4000, 300
Inferior direito400, 400400, 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.

image1.jpg

menu