Graphics和Graphics2D之间的区别?

时间:2013-10-13 11:52:47

标签: java swing graphics graphics2d

图形 Graphics2D 有什么区别?
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
}

1 个答案:

答案 0 :(得分:15)

图形本身是abstract class,因此您无法创建其实例。它只定义了一些接口和一些功能,因此它可以被其他类扩展。

因此即使Graphics g用作paintComponent中的参数,也不仅仅是Graphics。标准java库只有两个扩展类:DebugGraphics, Graphics2D,因此您使用的Graphics g Graphics2D实例存储在Graphics g中。

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