Javafx: cómo dar formas perspectiva

Video: JavaFX Java GUI Tutorial - 16 - TreeView

los PerspectiveTransform clase permite distorsionar una forma de modo que parece tener un efecto tridimensional.

Esto no es lo mismo que la creación de formas tridimensionales reales de la escena graph- simplemente distorsiona la geometría de un nodo para crear un efecto de perspectiva.

los PerspectiveTransform clase funciona mediante la asignación de las esquinas del rectángulo delimitador de la forma original a un cuadrilátero arbitrario. (Los rectángulo de delimitación es un rectángulo que contiene totalmente una forma, y ​​una cuadrilátero es cualquier forma de cuatro esquinas.) Todo lo que tiene que suministrar es la x e y las coordenadas de cada esquina del cuadrilátero, utilizando los métodos que se indican en esta tabla.

La Clase PerspectiveTransform
ConstructorExplicación
PerspectiveTransform ()Crea un nuevo efecto PerspectiveTransform con defecto
parámetros.
métodosExplicación
void setUlx (valor doble)Establece la esquina superior izquierda de la coordenada x.
void setUly (valor doble)Establece la esquina superior izquierda coordenada.
setUrx void (valor doble)Establece la esquina superior derecha de la coordenada x.
void setUry (valor doble)Establece la esquina superior derecha coordenada.
void setLlx (valor doble)Establece la esquina inferior izquierda de la coordenada x.
void setLly (valor doble)Establece la esquina inferior izquierda coordenada.
setLrx void (valor doble)Establece la esquina inferior derecha de la coordenada x.
void setLry (valor doble)Establece la esquina inferior derecha coordenada.

Para ilustrar cómo la perspectiva de transformar las obras, aquí se aplica a un tablero de ajedrez creado con el siguiente fragmento de código:

Grupo tablero = new Group () - boolean tamaño isLight = true-int = 50-for (int rango = 0- rango lt; 8- rango ++) {for (int = 0- archivo archivo lt; 8- archivo ++) {rectángulo R = new Rectángulo (tamaño, tamaño) -r.setX (tamaño de archivo *) -r.setY (rango de tamaño *) -Si (isLight) r.setFill (Color.LIGHTGRAY) -elser.setFill (Color.DARKGRAY) -isLight = isLight-board.getChildren () añadir (r) -.}} isLight = isLight-!

Este código utiliza un conjunto de anidados para bucles para dibujar las filas (filas) y archivos (columnas) de tablero de ajedrez con 50 × 50 rectángulos de colores alternantes. los isLight variable booleana se utiliza para seguir la pista del color de cada cuadrada de este valor se invierte después de cada rectángulo se dibuja.

los isLight valor se invierte después de cada archivo se dibuja para que el archivo subsiguiente comienza con el color opuesto. La figura muestra cómo aparece el tablero cuando se muestra en una escena.

Todo el tablero de ajedrez ocupa un cuadrado de 400 × 400. Para añadir perspectiva, PerspectiveTransform efecto fue creado que mapea los 400 × 400 tablero cuadrado a un cuadrilátero con las coordenadas de la esquina siguiente:

Esquinax originales, yNuevos x, y
Arriba a la izquierda0, 0100, 100
Superior derecha400, 0450, 100
Abajo a la izquierda0, 4000, 300
Inferior derecha400, 400400, 300

El código para llevar a cabo esta transformación es el siguiente:

Video: Como dibujar una lámina con vistas y perspectiva caballera (2 de 3)

PerspectiveTransform e = nuevo PerspectiveTransform () - e.setUlx (100) - // superior lefte.setUly (100) -e.setUrx (450) - // superior righte.setUry (100) -e.setLlx (0) - / / Baja lefte.setLly (300) -e.setLrx (400) - // Bajo righte.setLry (300) -board.setEffect (e) -

Esta figura muestra cómo se ve el tablero cuando se aplica esta perspectiva transformar.

Video: Dibujando en isométrica

Artículos Relacionados