B.3 绘图示例

假设要绘制隐藏的米奇——表示米老鼠的图标(参见 https://en.wikipedia.org/wiki/Hidden_Mickey),可将前面绘制的椭圆作为脸,再加上两只耳朵。为提高代码的可读性,我们用 Rectangle 对象来表示定界框。

下面的方法接受一个 Rectangle 对象并调用 fillOval

  1. public void boxOval(Graphics g, Rectangle bb) {
  2. g.fillOval(bb.x, bb.y, bb.width, bb.height);
  3. }

下面的方法绘制米老鼠:

  1. public void mickey(Graphics g, Rectangle bb) {
  2. boxOval(g, bb);
  3. int dx = bb.width / 2;
  4. int dy = bb.height / 2;
  5. Rectangle half = new Rectangle(bb.x, bb.y, dx, dy);
  6. half.translate(-dx / 2, -dy / 2);
  7. boxOval(g, half);
  8. half.translate(dx * 2, 0);
  9. boxOval(g, half);
  10. }

第 1 行绘制脸;接下来的 3 行创建一个较小的矩形。然后,我们将这个矩形向左上方平移,用作左耳的定界框,再将它向右平移,用作右耳的定界框。结果如图 B-3 所示。

{%}

图 B-3:用 Java 图形绘制的隐藏的米奇

有关 Rectangletranslate 的更多详细信息,请参阅第 10 章。更多的绘图示例请参阅本附录末尾的练习。