B.2 Graphics类的方法

你可能熟悉笛卡儿坐标(coordinate),其中 xy 的值都可正可负。但在 Java 使用的坐标系中,原点位于左上角,因此 xy 总是正整数。图 B-1 显示了这些坐标系。

{%}

图 B-1:笛卡尔儿坐标和 Java 图形坐标的差别

图形坐标以像素(pixel)为单位,每个像素对应屏幕上的一点。

要想在画布上绘图,可对 Graphics 对象调用方法。无需创建这个 Graphics 对象,因为它将在创建 Canvas 对象时自动创建,并作为实参传递给方法 paint

前面的示例使用了 fillOval,这个方法的特征标如下:

  1. /**
  2. * 用当前颜色填充一个被指定矩形内接的椭圆
  3. */
  4. public void fillOval(int x, int y, int width, int height)

其中的四个形参指定了将在其中绘制椭圆的定界框(bounding box)。xy 指定定界框左上角的位置。定界框本身并不会显示出来,如图 B-2 所示。

B.2 Graphics类的方法 - 图2

图 B-2:内接定界框的椭圆

要给形状指定颜色,可对 Graphics 对象调用方法 setColor

  1. g.setColor(Color.red);

方法 setColor 决定了随后绘制图形时将使用的颜色。Color.redColor 类提供的一个常量,要使用它就必须导入 java.awt.Color。其他颜色常量包括:

  1. black blue cyan darkGray gray green
  2. lightGray magenta orange pink white yellow

还可通过指定红色、绿色和蓝色(GRB)分量来自定义颜色,如下所示:

  1. Color purple = new Color(128, 0, 128);

每个颜色分量的可能取值都是 0(最暗)~255(最亮)的整数;(0, 0, 0) 表示黑色,而 (255, 255, 255) 表示白色。

可调用 setBackground 来设置 Canvas 的背景色:

  1. canvas.setBackground(Color.white);