2013-10-13 106 views
7

图形图形2D有什么区别?
Graphics2D是否是图形的扩展?图形和Graphics2D之间的区别?

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 
} 
+0

它实际上是具有AffineTransform类方法的Graphics类。 –

回答

13

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

因此,即使这个Graphics g,它被用作参数paintComponent,不仅是Graphics。标准的java库只有两个扩展类:DebugGraphics, Graphics2D,所以您使用的Graphics g是实例存储在Graphics g。如果不是,Graphics2D g2 =(Graphics2D)g;会以错误结束。