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);
}
}
输出结果如下:
热门文章
优秀文章