12

GraphicsGraphics2D有什么区别?
Graphics2D 是否是 Graphics 的扩展?

public void paintComponent(Graphics g)
{
    super.paintComponent(g);
    g.drawRect(25, 25, 20, 20); //use Graphics to paint rectangle
    Graphics2D g2 =(Graphics2D)g;
    g2.drawRect(0, 0, 20, 20); // use Graphics2D to paint rectangle
}
4

1 回答 1

19

Graphics 本身是一个abstract class,因此您不能创建它的实例。它只定义了一些接口和一些功能,所以它可以被其他类扩展。

因此Graphics g,即使是用作参数的thispaintComponent也不仅仅是Graphics. 标准的 java 库只有两个扩展类:DebugGraphics, Graphics2D,所以Graphics g你使用的是Graphics2D实例存储在Graphics g.

如果不是,则该行Graphics2D g2 =(Graphics2D)g;将以错误结束。

于 2013-10-13T11:59:18.323 回答