绘图颜色与画笔属性

Java 语言使用 Color 类封装颜色的各种属性,并对颜色进行管理。另外,在绘制图形时还可以指定线的粗细和虚实等画笔属性。

设置颜色

使用 Color 类可以创建任意颜色的对象,不用担心平台是否支持该颜色,因为 Java 以跨平台和与硬件无关的方式支持颜色管理。创建 Color 对象的构造方法有如下两种:

     Color col = new Color(int r, int g, int b)
     Color col = new Color(int rgb)
  • rgb:颜色值,该值是红、绿、蓝三原色的总和。

  • r:该参数是三原色中红色的取值。

  • g:该参数是三原色中绿色的取值。

  • b:该参数是三原色中蓝色的取值。

Color 类定义了常用色彩的常量值,如表19.2所示。这些常量都是静态的 Color 对象,可以直接使用这些常量定义的颜色对象。绘图类可以使用 setColor() 方法设置当前颜色。语法如下:

image 2024 03 06 10 07 37 232
Figure 1. 表19.2 常用的Color常量
     setColor(Color color)

其中,参数 color 是 Color 对象,代表一个颜色值,如红色、黄色或默认的黑色。

例如,设置当前绘图颜色为红色的代码如下:

public void paint(Graphics g) {
    Graphics2D g2 = (Graphics2D)g;
    g.setColor(Color.RED);
    ...
}

设置好绘图颜色后,再进行绘图或者绘制文本,系统会采用该颜色作为前景色。如果此时想绘制其他颜色的图形或文本,则需要再次调用 setColor() 方法设置其他颜色。

设置画笔

默认情况下,Graphics 类使用的画笔属性是粗细为1个像素的正方形,而 Graphics2D 类可以调用 setStroke() 方法设置画笔的属性,如改变线条的粗细、虚实,定义线段端点的形状、风格等。语法格式如下:

     setStroke(Stroke stroke)

其中,参数 stroke 是 Stroke 接口的实现类对象。

setStroke() 方法必须接收一个 Stroke 接口的实现类对象作参数,java.awt 包中提供了 BasicStroke 类,它实现了 Stroke 接口,并且通过不同的构造方法创建画笔属性不同的对象。这些构造方法如下:

  • BasicStroke()。

  • BasicStroke(float width)。

  • BasicStroke(float width, int cap, int join)。

  • BasicStroke(float width, int cap, int join, float miterlimit)。

  • BasicStroke(float width, int cap, int join, float miterlimit, float[] dash, float dash_phase)。

这些构造方法中的参数说明如表19.3所示。

image 2024 03 06 10 11 22 384
Figure 2. 表19.3 BasicStroke类构造方法的参数说明

cap 参数可以使用 CAP_BUTT、CAP_ROUND 和 CAP_SQUARE 常量,这 3 个常量对线端点的装饰效果如图19.5所示。

image 2024 03 06 10 12 00 069
Figure 3. 图19.5 cap参数对线端点的装饰效果

join 参数用于修饰线段交会效果,可以使用 JOIN_BEVEL、JOIN_MITER 和 JOIN_ROUND 常量,效果如图19.6所示。

编程训练(答案位置:资源包\TM\sl\19\编程训练)

【训练3】彩色扇形 绘制4个指定角度的填充扇形,并设置填充扇形的颜色分别为黄、红、青和黑,效果如图19.7所示。

【训练4】绘制线条不同粗细的椭圆 设置笔画的粗细,绘制4个线条不同粗细的椭圆,效果如图19.8所示。

image 2024 03 06 10 19 01 348
Figure 4. 图19.6 join参数修饰线段交会处的效果
image 2024 03 06 10 19 42 310
Figure 5. 图19.7 填充扇形
image 2024 03 06 10 20 09 224
Figure 6. 图19.8 绘制4个线条不同粗细的椭圆