我需要将 JPanel(图形)中的内容(形状)转换为 SVGGraphics2D 对象,以获取使用 Apache Batik 库生成的 svg 文件。
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2.setPaint(fg);
// draw Text
g2.drawString("Hello world!", 250, 400);
// draw Line2D.Double
g2.setPaint(orange);
g2.draw(new Line2D.Double(50, 50, 200, 200));
// draw Point2D.Double
g2.setPaint(red);
g2.fill(new Ellipse2D.Double(400, 400, 5, 5));
// draw Rectangle2D.Double
g2.setPaint(magenta);
g2.draw(new Rectangle2D.Double(600, 600, 300, 150));
g2.setPaint(magenta);
g2.draw(new Rectangle2D.Double(300, 300, 300, 150));
// draw Ellipse2D.Double
g2.setPaint(blue);
g2.draw(new Ellipse2D.Double(400, 400, 200, 200));
// draw GeneralPath (polygon)
g2.setPaint(green);
int x1Points[] = {200, 500, 300};
int y1Points[] = {100, 100, 300};
GeneralPath polygon = new GeneralPath(GeneralPath.WIND_EVEN_ODD,
x1Points.length);
polygon.moveTo(x1Points[0], y1Points[0]);
for ( int index = 1; index < x1Points.length; index++ ) {
polygon.lineTo(x1Points[index], y1Points[index]);
}
polygon.closePath();
g2.draw(polygon);
}
public void onlyWrite(){
JFrame f = new JFrame("Shapes Example2");
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {System.exit(0);}
});
// Get a DOMImplementation.
DOMImplementation domImpl = GenericDOMImplementation.getDOMImplementation();
铸造 SVGGraphics2D 我得到以下异常:
线程“main”中的异常 java.lang.ClassCastException: sun.java2d.SunGraphics2D 无法在 ShapesExample2.onlyWrite(ShapesExample2.java:122) at ShapesExample2.main(ShapesExample2.java: 144)
我怎样才能得到 svg 文件?谢谢!
qq_笑_17
相关分类