JavaFX 轉(zhuǎn)換

2018-03-18 20:45 更新

JavaFX教程 - JavaFX轉(zhuǎn)換


JavaFX轉(zhuǎn)換相關(guān)類位于javafx.scene.transform包中,并且是Transform類的子類。

一個(gè)變換是關(guān)于如何改變坐標(biāo)系。 JavaFX支持以下類型的轉(zhuǎn)換:

  • Translation
  • Rotation
  • Scaling
  • Shearing

JavaFX Transformations可以在三個(gè)坐標(biāo)上操作,從而允許我們創(chuàng)建三維3D對(duì)象和效果。

JavaFX實(shí)現(xiàn)了x軸和y軸以及x,y和z軸的變換構(gòu)造函數(shù)。

要?jiǎng)?chuàng)建二維2D效果,請(qǐng)僅指定x和y坐標(biāo)。要?jiǎng)?chuàng)建3D效果,請(qǐng)指定所有三個(gè)坐標(biāo)。


轉(zhuǎn)換

平移變換將節(jié)點(diǎn)沿著一個(gè)軸相對(duì)于其初始位置從一個(gè)位置移動(dòng)到另一個(gè)位置。木琴條的初始位置由x,y和z坐標(biāo)定義。

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class Main extends Application {
  public static void main(String[] args) {
    Application.launch(args);
  }

  @Override
  public void start(Stage primaryStage) {
    primaryStage.setTitle("Text Fonts");

    Group rectangleGroup = new Group();
    Scene scene = new Scene(rectangleGroup, 550, 250);

    Rectangle rect = new Rectangle();
    rect.setWidth(100);
    rect.setHeight(100);
    rect.setTranslateX( 135);
    rect.setTranslateY(11.0);
    
    rectangleGroup.getChildren().add(rect);

    primaryStage.setScene(scene);
    primaryStage.show();
  }
}

上面的代碼生成以下結(jié)果。

null

旋轉(zhuǎn)

旋轉(zhuǎn)變換將圍繞指定的樞軸點(diǎn)移動(dòng)節(jié)點(diǎn)。

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class Main extends Application {
  public static void main(String[] args) {
    Application.launch(args);
  }

  @Override
  public void start(Stage primaryStage) {
    primaryStage.setTitle("Text Fonts");

    Group rectangleGroup = new Group();
    Scene scene = new Scene(rectangleGroup, 550, 250);

    Rectangle rect = new Rectangle();
    rect.setWidth(100);
    rect.setHeight(100);

    rect.setRotate(10);
    rectangleGroup.getChildren().add(rect);

    primaryStage.setScene(scene);
    primaryStage.show();
  }
}

上面的代碼生成以下結(jié)果。

null

縮放

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class Main extends Application {
  public static void main(String[] args) {
    Application.launch(args);
  }

  @Override
  public void start(Stage primaryStage) {
    primaryStage.setTitle("Text Fonts");

    Group rectangleGroup = new Group();
    Scene scene = new Scene(rectangleGroup, 550, 250);

    Rectangle rect = new Rectangle();
    rect.setWidth(100);
    rect.setHeight(100);

    rect.setScaleY(2);
    rectangleGroup.getChildren().add(rect);

    primaryStage.setScene(scene);
    primaryStage.show();
  }
}

上面的代碼生成以下結(jié)果。

null

剪切

要剪切,使用Transform類的剪切類或剪切方法

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.Rectangle;
import javafx.scene.transform.Shear;
import javafx.stage.Stage;

public class Main extends Application {
  public static void main(String[] args) {
    Application.launch(args);
  }

  @Override
  public void start(Stage primaryStage) {
    primaryStage.setTitle("Text Fonts");

    Group rectangleGroup = new Group();
    Scene scene = new Scene(rectangleGroup, 550, 250);

    Rectangle rect = new Rectangle();
    rect.setWidth(100);
    rect.setHeight(100);

    Shear sh = new Shear();
    sh.setY(0.4);
    rect.getTransforms().add(sh);
    
    rectangleGroup.getChildren().add(rect);

    primaryStage.setScene(scene);
    primaryStage.show();
  }
}

上面的代碼生成以下結(jié)果。

null
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)