📜  JavaFX-颜色(1)

📅  最后修改于: 2023-12-03 15:01:36.525000             🧑  作者: Mango

JavaFX-颜色介绍

JavaFX 是Java平台的一个GUI工具包,提供了一些UI组件和丰富的图像、媒体、动画支持。颜色作为界面设计的重要元素,JavaFX 提供了一些方便的 API 用于创建、设置和管理颜色。下面我们来详细介绍 JavaFX 中的颜色相关的内容。

颜色类

JavaFX 提供了一个颜色类用于表示颜色,即 javafx.scene.paint.Color,它可用于创建一个颜色对象,同时它也是 JavaFX 中所有使用颜色的 API 的基础类。

创建颜色对象

创建一个颜色对象有多种方式:

  1. 通过 RGB 值创建,分别指定红、绿、蓝三种颜色的深度。
Color color = Color.rgb(255, 0, 0);
  1. 通过 RGBA 值创建,除了 RGB 值外还要指定颜色的不透明度。
Color color = Color.rgb(255, 0, 0, 0.5);
  1. 通过 HSB 值创建,分别指定色调、饱和度、亮度三种颜色的深度。
Color color = Color.hsb(120, 1, 1);
  1. 通过供应商指定的名称创建,例如 Color.web("red")Color.web("#ff0000")。支持的颜色名称和格式请参考JavaFX 官方文档
获取颜色属性

当我们创建了一个颜色对象后,我们可以获取它的各种属性。例如:

  1. 获取颜色的 RGBA 值
double red = color.getRed();    //取值范围为 0.0 ~ 1.0
double green = color.getGreen();
double blue = color.getBlue();
double opacity = color.getOpacity();
  1. 获取颜色的 HSB 值
double hue = color.getHue();    //取值范围为 0.0 ~ 360.0
double saturation = color.getSaturation();
double brightness = color.getBrightness();
double opacity = color.getOpacity();
预定义颜色

JavaFX 提供一些预定义颜色用于快捷创建颜色对象,这些预定义颜色名称和颜色值可以在 javafx.scene.paint.Color 类中找到。

Color color = Color.RED;      //红色
Color color = Color.GREEN;    //绿色
Color color = Color.BLUE;     //蓝色
Color color = Color.BLACK;    //黑色
Color color = Color.WHITE;    //白色

除此之外,还有一些预定义的灰度色,它们由 Color.gray() 方法创建,它接收一个0.0到1.0之间的值,表示灰度颜色的深度。

Color color = Color.gray(0.5); //浅灰色
颜色渐变

JavaFX 中的颜色渐变是指从一个颜色平滑过渡到另一个颜色。JavaFX 提供了两种颜色渐变方式:线性渐变和径向渐变。

线性渐变

线性渐变通过两个点来定义一个变化的线性区域,从而实现颜色的平滑渐变。下面是一个实现从红色到蓝色的线性渐变的例子。

LinearGradient gradient = new LinearGradient(
    0,      //起始点 X 坐标
    0,      //起始点 Y 坐标
    1,      //终点 X 坐标
    1,      //终点 Y 坐标
    true,   //循环填充
    CycleMethod.NO_CYCLE,   //填充方式
    new Stop(0, Color.RED),      //开始颜色和位置
    new Stop(1, Color.BLUE)      //结束颜色和位置
);

上面的代码创建了一个渐变,它从左上角到右下角,从红色到蓝色。

径向渐变

径向渐变通过一个点和一个半径范围来定义一个颜色变化区域,以此实现颜色的平滑变化。下面是一个实现从红色到蓝色的径向渐变的例子。

RadialGradient gradient = new RadialGradient(
    0.5,    //中心点 X 坐标
    0.5,    //中心点 Y 坐标
    0.5,    //半径
    0.5,    //焦点 X 坐标
    0.5,    //焦点 Y 坐标
    true,   //循环填充
    CycleMethod.NO_CYCLE,   //填充方式
    new Stop(0, Color.RED),      //开始颜色和位置
    new Stop(1, Color.BLUE)      //结束颜色和位置
);

上面的代码创建了一个渐变,它从圆心向外,从红色到蓝色,半径为 0.5。

颜色转换

当我们需要在不同的颜色表示形式间互相转换时,JavaFX 提供了一些方便的 API。

RGB 与 HSB 转换

JavaFX 提供了 Color.rgb()Color.hsb() 来分别创建 RGB 和 HSB 型的颜色对象,我们也可以使用相应的方法把这两种颜色表示方式相互转换。

Color rgbColor = Color.rgb(255, 0, 0);      //红色
Color hsbColor = rgbColor.hsb();
//分别输出 hue=0.0, saturation=1.0, brightness=1.0, opacity=1.0
System.out.println("hue=" + hsbColor.getHue() 
    + ", saturation=" + hsbColor.getSaturation()
    + ", brightness=" + hsbColor.getBrightness()
    + ", opacity" + hsbColor.getOpacity());
颜色字符串转换

JavaFX 中使用颜色字符串来表示颜色,常见的有 #RRGGBB 或 #RGB 形式。我们可以使用相应的方法来将颜色字符串转换为颜色对象。

Color color = Color.web("#ff0000"); //红色

同样地,也可以通过 Color.toString() 方法将颜色对象转换为颜色字符串。

Color color = Color.rgb(255, 0, 0);  //红色
String colorStr = color.toString();  //"0x0000FFFF"
颜色应用

最后,让我们来看一下如何在 JavaFX 中应用颜色。

设置节点颜色

大多数JavaFX UI元素都继承自 javafx.scene.Node 类,而它们有一个 .setFill() 方法用于设置背景颜色。例如,以下代码将一个圆的背景颜色设置为红色。

Circle circle = new Circle();
circle.setFill(Color.RED);
设置段落颜色

JavaFX 中的 javafx.scene.text.Text 类代表一个文本段落,它有 .setFill() 方法用于设置文本颜色。例如,以下代码将一个文本段落的颜色设置为红色。

Text text = new Text("Hello, JavaFX!");
text.setFill(Color.RED);
设置线条颜色

JavaFX 中的 javafx.scene.shape.Shape 类代表一条线条或一个形状,而它们都有 .setStroke() 方法用于设置线条或边框颜色。例如,以下代码将一个矩形的边框颜色设置为红色。

Rectangle rect = new Rectangle(100, 100);
rect.setStroke(Color.RED);
总结

本文介绍了 JavaFX 中颜色相关的内容,主要包括颜色类、颜色渐变、颜色转换以及颜色应用等方面。希望对大家有所帮助。