JavaFX中的剪下變換是什麼?
沿固定方向使物體形狀傾斜的位移稱為剪下變換。這也稱為傾斜。
在JavaFX中,使用**javafx.scene.transform.Shear**類的物件,可以沿所需軸線傾斜節點。在內部,此類旋轉指定的軸線,使得X和Y軸不再垂直。
此類包含四個屬性:
**pivotX** 屬性(double型),指定剪下樞軸點的x座標。可以使用**setPivotX()**方法設定此屬性的值。
**pivotY** 屬性(double型),指定剪下樞軸點的y座標。可以使用**setPivotY()**方法設定此屬性的值。
**x** 屬性(double型),指定剪下x。可以使用**setX()**方法設定此屬性的值。
**y** 屬性(double型),指定剪下y。可以使用**setY()**方法設定此屬性的值。
JavaFX中的每個節點都包含一個可觀察列表,用於儲存要應用於節點的所有變換。可以使用**getTransforms()**方法獲取此列表。
要傾斜節點:
例項化**Shear**類。
使用相應的setter方法設定剪下x(或剪下y)和樞軸點(可選)。
使用**getTransforms()**方法從節點(要移動的節點)獲取變換列表。
將上面建立的剪下物件新增到列表中。
將節點新增到場景中。
示例
下面的JavaFX示例演示了剪下變換。它包含一個二維幾何形狀和兩個滑塊,分別表示x和y傾斜值。如果移動滑塊,則物件會沿選擇的軸線傾斜。
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.Slider;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.transform.Shear;
import javafx.stage.Stage;
public class ShearExample extends Application {
public void start(Stage stage) {
//Creating a rectangle
Rectangle rect = new Rectangle(300, 100, 75, 75);
rect.setFill(Color.BLUEVIOLET);
rect.setStrokeWidth(5.0);
rect.setStroke(Color.BROWN);
//Setting the slider for the horizontal translation
Slider slider1 = new Slider(0, 2, 0);
slider1.setShowTickLabels(true);
slider1.setShowTickMarks(true);
slider1.setMajorTickUnit(0.5);
slider1.setBlockIncrement(0.3);
//Creating shear transformation
Shear shear = new Shear();
//Setting the pivot points
shear.setPivotX(200);
shear.setPivotY(250);
//Setting the dimensions for the shear
slider1.valueProperty().addListener(new ChangeListener<Number>() {
public void changed(ObservableValue <?extends Number>observable, Number oldValue, Number newValue){
shear.setX((double) newValue);
shear.setY(0.0);
}
});
//Setting the slider for the vertical translation
Slider slider2 = new Slider(0, 1, 0);
slider2.setShowTickLabels(true);
slider2.setShowTickMarks(true);
slider2.setMajorTickUnit(0.5);
slider2.setBlockIncrement(0.3);
//Creating the translation transformation
slider2.valueProperty().addListener(new ChangeListener<Number>() {
public void changed(ObservableValue <?extends Number>observable, Number oldValue, Number newValue){
shear.setX(0.0);
shear.setY((double) newValue);
}
});
//Adding the transformation to the sphere
rect.getTransforms().add(shear);
//Creating the pane
BorderPane pane = new BorderPane();
pane.setLeft(new VBox(new Label("Shear along X-Axis"), slider1));
pane.setRight(new VBox(new Label("Shear along Y-Axis"), slider2));
pane.setCenter(rect);
//Preparing the scene
Scene scene = new Scene(pane, 600, 250);
stage.setTitle("Shear Example");
stage.setScene(scene);
stage.show();
}
public static void main(String args[]){
launch(args);
}
}輸出

廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP