Javafx 简明教程

JavaFX - Lighting Effect

光照效果用于模拟光源发出的光。有不同种类的光源,包括 Point, DistantSpot

The lighting effect is used to simulate a light from a light source. There are different kinds of light sources which include − Point, Distant and Spot.

如果我们没有指定任何光源,它将使用 JavaFX 的默认光源。

If we do not mention any source for lighting, it uses the default source of JavaFX.

包 javafx.scene.effect 中名为 Lighting 的类表示灯光效果,该类包含十个属性,它们是:

The class named Lighting of the package javafx.scene.effect represents the lighting effect, this class contains ten properties, which are −

  1. bumpInput − This property is of the type Effect and it represents an optional bump map input to the lighting effect.

  2. contentInput − This property is of the type Effect and it represents a content input to the lighting effect.

  3. diffuseConstant − This property is of the type double and it represents the diffuse constant of the light.

  4. SpecularConstant − This property is of the type double and it represents the specular constant of the light.

  5. SpecularExponent − This property is of the type double and it represents the specular exponent of the light.

  6. SurfaceScale − This property is of the type double and it represents the surface scale factor of the light.

Example

以下程序演示了 JavaFX 的灯光效果。在此,我们在场景中绘制文本“Welcome to Tutorialspoint”和一个圆。

The following program is an example demonstrating the lighting effect of JavaFX. In here we are drawing a text “Welcome to Tutorialspoint” and a circle in a scene.

然后,我们对它们应用灯光效果。在此,由于我们未提及任何光源,JavaFX 使用其默认光源。

To these, we are applying the lighting effect. In here, as we are not mentioning any source, JavaFX uses its default source.

将此代码保存在名为 LightingEffectExample.java 的文件中。

Save this code in a file with the name LightingEffectExample.java.

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.effect.Lighting;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;

public class LightingEffectExample extends Application {
   @Override
   public void start(Stage stage) {
      //Creating a Text object
      Text text = new Text();

      //Setting font to the text
      text.setFont(Font.font(null, FontWeight.BOLD, 40));

      //setting the position of the text
      text.setX(60);
      text.setY(50);

      //Setting the text to be embedded.
      text.setText("Welcome to Tutorialspoint");

      //Setting the color of the text
      text.setFill(Color.RED);

      //Drawing a Circle
      Circle circle = new Circle();

      //Setting the center of the circle
      circle.setCenterX(300.0f);
      circle.setCenterY(160.0f);

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

      //setting the fill color of the circle
      circle.setFill(Color.CORNFLOWERBLUE);

      //Instantiating the Lighting class
      Lighting lighting = new Lighting();

      //Applying lighting effect to the text
      text.setEffect(lighting);

      //Applying lighting effect to the circle
      circle.setEffect(lighting);

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

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

      //Setting title to the Stage
      stage.setTitle("Distant light effect 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 文件。

Compile and execute the saved java file from the command prompt using the following commands.

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

Output

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

On executing, the above program generates a JavaFX window as shown below.

lighting effect