1

我正在使用http://sourceforge.net/projects/jlibeps/库。

我有一个已经绘制到的现有 Graphics2D 对象,然后想从 Graphics2D 对象创建一个新的 EpsGraphics2D 对象。

这是可能的,或者关于如何实现这一点的任何建议?

jlibeps 作者提供了这个例子,但我不明白这paint(g)条线是如何做到这一点的:

//If you want to paint a Graphics2D in an EPS file, you can do that:
FileOutputStream finalImage = new FileOutputStream(file);
EpsGraphics2D g = new EpsGraphics2D("Title", finalImage, 0, 0, 500, 500);
paint(g);
g.flush();
g.close();
finalImage.close();
4

1 回答 1

1

拥有一个Graphics2D对象通常对您没有帮助,因为它允许您绘制到某种介质,但不能读取当前渲染到该介质的内容,更不用说用于绘制当前内容的指令了。

相反,您必须将EpsGraphics2D对象馈送到管道中,就像将Graphics2D对象用于屏幕渲染一样。通常你想绘制某个组件的内容。这可以通过调用它的paint方法来完成。因此,通过使用您构造的 eps 图形对象调用该paint方法,您可以使所有绘画指令转到 eps 文件。这就是paint(g)手册中的行所指的内容。

换种说法:你不需要一个现有的Graphics2D对象,你可以神奇地变成一个EpsGraphics2D对象。相反,您需要一个方法调用链来对Graphics2D对象做一些有用的事情,即向它呈现一些内容。EpsGraphics2D然后,您可以通过将对象(这只是对象的一种特殊情况Graphics2D,因此也是Graphics对象的一种特殊情况)传递给该代码的最外层调用来重新使用该代码来生成一个 eps 文件。

于 2012-10-12T12:30:47.663 回答