2013-08-22 5 views
0

SVG 이미지 (국가 맵)를 가지고 있으며 특정 위치에 3d 막대가 표시되는 JfreeChart를 맨 위에 추가하려고합니다. 누군가가 기존 SVG 이미지에 JfreeChart를 추가하는 방법을 알려주십시오. 다음SVG 이미지에 JfreeChart 추가하기

지금까지

  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")); 

내가 g.drawBytes를 바이트로 JFreeChart의 변환 및 사용 시도 코드()이지만은 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

관련 문제