Javafx 简明教程

JavaFX - Stroke Transition

我们已了解到填充过渡用于改变形状区域的颜色。与之类似,描边过渡用于改变形状的描边颜色。

JavaFX 中的形状可以包含三种类型的描边:内部、外部和居中;并且对其应用不同的属性。此过渡忽视描边的属性,而只是在指定的持续时间内改变其颜色。

Stroke Transition

JavaFX 使用属于 javafx.animation 包的 StrokeTransition 类提供描边过渡。通过导入此类,我们可以在 JavaFX 应用程序中更改任何形状的描边颜色。要实现此动画,此类提供了多种属性:

  1. duration − 此 StrokeTransition 的持续时间。

  2. shape − 此 StrokeTransition 的目标形状。

  3. fromValue − 指定此 StrokeTransition 的起始颜色值。

  4. toValue − 指定此 StrokeTransition 的停止颜色值。

Example

以下是演示 JavaFX 中 Stoke 过渡的程序。将此代码保存在名为 StrokeTransitionExample.java 的文件中。

import javafx.animation.StrokeTransition;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
import javafx.util.Duration;

public class StrokeTransitionExample extends Application {
   @Override
   public void start(Stage stage) {
      //Drawing a Circle
      Circle circle = new Circle();

      //Setting the position of the circle
      circle.setCenterX(300.0f);
      circle.setCenterY(135.0f);

      //Setting the radius of the circle
      circle.setRadius(100.0f);

      //Setting the color of the circle
      circle.setFill(Color.BROWN);

      //Setting the stroke width of the circle
      circle.setStrokeWidth(20);

      //creating stroke transition
      StrokeTransition strokeTransition = new StrokeTransition();

      //Setting the duration of the transition
      strokeTransition.setDuration(Duration.millis(1000));

      //Setting the shape for the transition
      strokeTransition.setShape(circle);

      //Setting the fromValue property of the transition (color)
      strokeTransition.setFromValue(Color.BLACK);

      //Setting the toValue property of the transition (color)
      strokeTransition.setToValue(Color.BROWN);

      //Setting the cycle count for the transition
      strokeTransition.setCycleCount(50);

      //Setting auto reverse value to false
      strokeTransition.setAutoReverse(false);

      //Playing the animation
      strokeTransition.play();

      //Creating a Group object
      Group root = new Group(circle);

      //Creating a scene object
      Scene scene = new Scene(root, 600, 300);

      //Setting title to the Stage
      stage.setTitle("Stroke transition example");

      //Adding scene to the stage
      stage.setScene(scene);

      //Displaying the contents of the stage
      stage.show();
   }
   public static void main(String args[]){
      launch(args);
   }
}

使用以下命令,从命令提示符编译并执行已保存的 java 文件。

javac --module-path %PATH_TO_FX% --add-modules javafx.controls StrokeTransitionExample.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls StrokeTransitionExample

执行后,上述程序会生成如下所示的 JavaFX 窗口。

stroke transition