Javafx: como dar formas perspectiva

o PerspectiveTransform

classe permite distorcer uma forma para que ele parece ter um efeito tridimensional.

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

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

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) - // 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.


Publicações relacionadas