JavaFX: cómo dar formas perspectiva
los PerspectiveTransform clase permite distorsionar una forma de manera que parece tener un efecto tridimensional.
Esto no es lo mismo que la creación de formas reales tridimensionales de la escena ficos 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 de un cuadrilátero arbitrario. (Los rectángulo que bordea 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 coordenadas de cada esquina del cuadrilátero, utilizando los métodos indicados en esta tabla.
Constructor | Explicación |
---|---|
PerspectiveTransform () | Crea un nuevo efecto PerspectiveTransform con DefaultParameters. |
Métodos | Explicación |
void setUlx (valor doble) | Establece la esquina superior izquierda de la coordenada x. |
void setUly (valor doble) | Establece la esquina superior izquierda de coordenada. |
void setUrx (valor doble) | Establece la esquina superior derecha coordenada x. |
void setUry (valor doble) | Establece la esquina superior derecha coordenada. |
void setLlx (valor doble) | Establece la esquina inferior izquierda coordenada x. |
void setLly (valor doble) | Establece la esquina inferior izquierda coordenada. |
void setLrx (valor doble) | Establece la esquina inferior derecha 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 bordo = new Grupo () - boolean tamaño isLight = true-int = 50-for (int fila = 0- rango lt; 8- rango ++) {for (int file = 0- archivo lt; 8- archivo ++) {rectángulo r = new Rectangle (tamaño, tamaño) -r.setX (archivo * tamaño) -r.setY (Ranking * 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 anidada para bucles para dibujar las filas (filas) y archivos (columnas) del tablero de ajedrez usando 50x50 rectángulos de colores alternados. los es ligero Variable booleana se utiliza para realizar un seguimiento del color de cada cuadrada de este valor se invierte después se dibuja cada rectángulo.
los es ligero 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 400x400. Para añadir perspectiva, PerspectiveTransform efecto fue creado que mapea el 400x400 tablero cuadrado a un cuadrilátero con las coordenadas de la esquina siguiente:
Corner | X originales, y | Nuevos x, y |
---|---|---|
Arriba a la izquierda | 0, 0 | 100, 100 |
Superior derecha | 400, 0 | 450, 100 |
Inferior izquierda | 0, 400 | 0, 300 |
Inferior derecha | 400, 400 | 400, 300 |
El código para llevar a cabo esta transformación se ve así:
PerspectiveTransform e = new 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) - // Baja righte.setLry (300) -board.setEffect (e) -
Esta figura muestra cómo el tablero se ve cuando se aplica esta perspectiva transformar.