JavaFX Color类

在 JavaFX 中,我们可以用颜色填充形状。我们可以使用多种方法灵活地创建自己的颜色,并将其作为 Paint 对象传递给setFill()方法。让我们讨论在 JavaFX 中创建颜色的几种方法。

1 RGB颜色 

RGB 颜色系统是最流行的在图形中创建颜色的方法。它由名为 RED → R、GREEN → G 和 BLUE → B 的三个组件组成。每个组件使用 8 位,这意味着每个组件可以具有从 0 到 22^8 - 1=255 的整数值。

计算机屏幕可以看作是像素的集合。集合 (R,G,B) 实际上代表了它们各自 LED 在屏幕上的发射。

如果RED的值设置为 0,则表示红色 LED 关闭,而值 255 表示 LED 完全发光。(0,0,0) 的组合代表黑色,而 (255,255,255) 代表白色。该范围内的中间值可以代表不同的颜色。

利用RGB的叠加,我们可以表现出255*255*255种不同的颜色。在 JavaFX 中,类javafx.scene.paint.Color类表示颜色。

有一个名为Color 类的rgb()静态方法。它接受三个整数参数,分别是 Red、Green、Blue 和一个可选的 double 参数,称为 alpha。alpha 的值与颜色的不透明度成正比。alpha 值 0 表示颜色完全透明,而值 1 表示颜色完全不透明。

RGB颜色的示例

package com.yiidian;

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

public class Shape_Example extends Application {

    @Override
    public void start(Stage primarystage) {
        Group root = new Group();
        primarystage.setTitle("一点教程网:Color Example");
        Rectangle rect = new Rectangle();
        rect.setX(50);
        rect.setY(20);
        rect.setWidth(100);
        rect.setHeight(150);
        int red=20;
        int green=125;
        int blue=10;
        rect.setFill(Color.rgb(red, green, blue,0.63));
        root.getChildren().add(rect);
        Scene scene = new Scene(root,200,200);
        primarystage.setScene(scene);
        primarystage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

输出结果为:

2 颜色名称

在 JavaFX 中,我们还可以通过颜色名称来创建颜色。类javafx.scene.paint.Color包含所有颜色作为类属性。Color 属性需要作为Paint类对象在 setFill() 方法中传递。

颜色名称的例子:

package com.yiidian;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.effect.DropShadow;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class Shape_Example extends Application {

    @Override
    public void start(Stage primarystage) {
        Group root = new Group();
        primarystage.setTitle("一点教程网:Color Example");
        Rectangle rect = new Rectangle();
        rect.setX(50);
        rect.setY(20);
        rect.setWidth(100);
        rect.setHeight(150);
        rect.setFill(Color.RED); //passing color name   
        rect.setEffect(new DropShadow());
        root.getChildren().add(rect);
        Scene scene = new Scene(root,200,200);
        primarystage.setScene(scene);
        primarystage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

输出结果如下:

3 HSB 颜色

除了我们迄今为止看到的各种方法,JavaFX 还使我们能够使用 HSB 来创建颜色,即色相、饱和度和亮度的组合。javafx.scene.paint.Color包含一个静态方法Color.hsb(),它接受三个整数 h、s 和 b。

HSB 颜色的例子:

package com.yiidian;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.effect.DropShadow;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class Shape_Example extends Application {

    @Override
    public void start(Stage primarystage) {
        Group root = new Group();
        primarystage.setTitle("一点教程网:Color Example");
        Rectangle rect = new Rectangle();
        rect.setX(50);
        rect.setY(20);
        rect.setWidth(200);
        rect.setHeight(250);
        rect.setEffect(new DropShadow());
        root.getChildren().add(rect);
        Scene scene = new Scene(root,300,400,Color.hsb(180, 1, 1));
        primarystage.setScene(scene);
        primarystage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

输出结果为:

4 网页颜色

javafx.scene.paint.color 类使我们能够使用 Color.web() 方法创建网络颜色。这最多可以使用两个参数,其中一个是颜色的十六进制值,另一个是称为 alpha 通道的可选参数,表示颜色的不透明度。

Color.web("#0000FF") //带有隐式alpha的蓝色

Color.web("#0000FF",1) //带有显式alpha的蓝色

Alpha 是一个 double 类型的值,可以保存 0.0 到 1.0 范围内的值。

网页颜色的例子:

package com.yiidian;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.effect.DropShadow;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class Shape_Example extends Application {

    @Override
    public void start(Stage primarystage) {
        Group root = new Group();
        primarystage.setTitle("一点教程网:Color Example");
        Rectangle rect = new Rectangle();
        rect.setX(50);
        rect.setY(20);
        rect.setWidth(200);
        rect.setHeight(250);
        rect.setEffect(new DropShadow());
        rect.setFill(Color.web("#0000FF",1));
        root.getChildren().add(rect);
        Scene scene = new Scene(root,300,400);
        primarystage.setScene(scene);
        primarystage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

输出结果如下:

热门文章

优秀文章