2013-08-22 60 views
0

我有一個SVG圖像(一個國家的地圖),我試圖在它的頂部添加一個JfreeChart,它會在特定位置顯示3d酒吧。有人可以請幫忙指出我如何添加一個JfreeChart到現有的SVG圖像。將JfreeChart添加到SVG圖像

以下是()到目前爲止的代碼

  String parser = XMLResourceDescriptor.getXMLParserClassName(); 
      SAXSVGDocumentFactory sax = new SAXSVGDocumentFactory(parser); 
      String uri = "file:///F://WorldMap.svg"; 
      SVGDocument doc = sax.createSVGDocument(uri); 
      SVGGraphics2D my_svg_generator = new SVGGraphics2D(doc); 

      // Create a converter for this document. 
      SVGGraphics2D g = new SVGGraphics2D(doc); 

      //got a JfreeChart from a static method depending on data 
      JFreeChart chart = createChart(createDataset()); 
      //I can add up normal nodes 
      Element svgRoot = doc.getDocumentElement(); 
      svgRoot.appendChild(doc.createElementNS("http://www.w3.org/2000/svg", "rect")); 

我試圖轉換到JFreeChart的字節,並使用g.drawBytes,但它呈現在SVG的頂部一些垃圾。

希望如果有人能幫助這一點。

回答

1

jfreechart是一個圖像,因此您需要創建一個圖像元素,然後將jfreechart數據轉換爲數據uri並將數據url設置爲圖像的xlink:href屬性。

jfreechart可以生成GIF,PNG或JPEG圖像,所以你必須適當調整data uri,但它應該看起來像這樣的PNG圖像。

<image xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA 
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO 
9TXL0Y4OHwAAAABJRU5ErkJggg==" /> 

不要忘記也要將字節數據轉換爲base64。有各種各樣base64 encoders around