2008-10-07 31 views

回答

24

根据讨论here,它始终是安全地从Graphics转换为Graphics2D。不过,我无法迅速找到Sun的官方声明。

的原因,它是有效的,从 图形转换为Graphics2D的,是因为Sun 说,所有的图形对象由API在Java中1.2返回 或 上方,将会 的Graphics2D的子类。

另一个提示here也有同样的结论。

图形对象始终可以铸造 Graphics2D g2d =(Graphics2D)g;

+0

感谢您的参考。即使它没有直接引用Sun源代码,我也会接受它,因为我认为它足够接近。 – 2008-10-07 17:07:27

10

在Chet Haase和Romain Guy的书Filthy Rich Client中他们说Swing几乎总是使用一个Graphics2D对象。此例外是打印和Swing的DebugGraphics对象。所以只要这些情况都不适用于你的代码,就可以安全地投入到Graphics2D。两位作者都在Sun工作,所以我会假设他们知道他们在说什么。

6

2D Graphics Trail说:

要使用应用程序的Java 2D API功能,投Graphics对象传递到组件的渲染方法Graphics2D对象。例如:

public void paint (Graphics g) { 
    Graphics2D g2 = (Graphics2D) g; 
    ... 
} 

这是最“官方”的来源,我能找到。直接从Sun的Java教程中,我会说这是官方批准的做法。如果JavaDocs拼写出来,我不会完全怀念,但...