本文概述
- 属性
- 构造函数
在两种剪切中, 只有一个坐标会更改值, 而另一坐标保持不变。下图显示了对其应用X剪切转换后的对象。矩形的y坐标保持不变, 而X坐标移动了某个因子。
在JavaFX中, 类javafx.scene.transform.Shear表示剪切转换。
文章图片
属性 下表描述了该类的属性以及setter方法。
属性 | 描述 | 设置方法 |
---|---|---|
pivotX | 这是一个双精度类型的属性。它表示剪切轴心点的X坐标。 | setPivotX(double value) |
pivotY | 这是一个双精度类型的属性。它表示剪切枢轴点的Y坐标。 | setPivotY(double value) |
x | 这是一个双精度类型的属性。它代表乘数, 坐标沿其正X方向偏离, 作为其Y坐标的因数。 | setX(double value) |
y | 这是一个双精度类型的属性。它代表乘数, 坐标沿其正Y方向偏离, 作为其X坐标的因数。 | setY(double value) |
- public Shear():使用默认参数创建一个新的Shear实例。
- public Shear(double x, double y):创建一个具有指定偏移坐标的新实例。枢轴坐标设置为(0, 0)。
- public Shear(double x, double y, double axisX, double axisY):使用指定的偏移坐标和枢轴坐标创建一个新实例。
【JavaFX剪切】以下示例说明了剪切转换的实现。在这里, 我们创建了三个矩形, 分别用蓝色, 深灰色和粉红色填充。深灰色矩形是原始矩形, 蓝色矩形是X剪切的, 粉红色矩形是Y剪切的。
package application;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.scene.transform.Shear;
import javafx.stage.Stage;
public class ShearExample extends Application{ @Override
public void start(Stage primaryStage) throws Exception {
// TODO Auto-generated method stub
// creating Rectangles
Rectangle rect1 = new Rectangle(60, 100, 150, 200);
Rectangle rect2 = new Rectangle(350, 100, 150, 200);
Rectangle rect3 = new Rectangle(640, 100, 150, 200);
//creating Text node just for the identification
Text text1 = new Text("After X shear");
Text text2 = new Text("Original ");
Text text3 = new Text("After Y shear");
//setting the positions and the fonts for the text nodes
text1.setX(70);
text1.setY(370);
text2.setX(380);
text2.setY(370);
text3.setX(640);
text3.setY(370);
text1.setFont(Font.font("calibri", FontWeight.BOLD, FontPosture.ITALIC, 20));
text2.setFont(Font.font("calibri", FontWeight.BOLD, FontPosture.ITALIC, 20));
text3.setFont(Font.font("calibri", FontWeight.BOLD, FontPosture.ITALIC, 20));
//setting the color and stroke for the rectangles
rect1.setFill(Color.BLUE);
rect1.setStroke(Color.BLACK);
rect2.setFill(Color.DARKGRAY);
rect2.setStroke(Color.BLACK);
rect3.setFill(Color.PINK);
rect3.setStroke(Color.BLACK);
//creating the shear transformation
Shear shearX = new Shear();
// setting properties for the shear, the Y coordinate // needs to set to (0, 0) for the X-shear transformation
shearX.setPivotX(200);
shearX.setPivotY(250);
shearX.setX(0.3);
shearX.setY(0.0);
// applying the shear to first rectangle.
rect1.getTransforms().add(shearX);
//creating the shear for third rectangle
Shear shearY = new Shear();
//setting the properties for shear, X coordinate needs // to be set to (0, 0) in order to implement Y-shear
shearY.setPivotX(600);
shearY.setPivotY(80);
shearY.setX(0.0);
shearY.setY(0.2);
rect3.getTransforms().add(shearY);
Group root = new Group();
root.getChildren().addAll(rect1, rect2, rect3, text1, text2, text3);
Scene scene = new Scene(root, 880, 420);
primaryStage.setScene(scene);
primaryStage.setTitle("Shear Example");
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}}
文章图片
推荐阅读
- JavaFX滑块
- JavaFX阴影效果
- JavaFX顺序转换
- JavaFX滚动条
- Ubuntu环境Docker+K8s+Dashboard的安装配置(无坑亲测)
- yum提示Another app is currently holding the yum lock; waiting for it to exit...
- 解决spring mybatis 整合后mapper接口注入失败
- UVA 12113 Overlapping Squares
- Android 操作SQLite基本用法