2014-02-18 2 views
0

내 차트에 폴리곤 주석을 만들고 그려진 폴리곤 외부의 색으로 차트를 채우는 방법을 알고 싶습니다. Jfreechart 1.0.17을 사용하고 있습니다.JFreechart 폴리곤 외부의 색 채우기

Color plotBackground = (Color) plot.getBackgroundPaint(); 
plot.setBackgroundPaint(new Color(0xff0000)); 
XYLineAndShapeRenderer renderer 
    = (XYLineAndShapeRenderer) plot.getRenderer(); 

XYPolygonAnnotation a = new XYPolygonAnnotation(new double[] {2.0, 
    5.0, 2.5, 8.0, 3.0, 5.0, 2.5, 2.0}, null, null, 
    new Color(plotBackground.getRed(), plotBackground.getGreen(), 
      plotBackground.getBlue(), 255)); 

을하지만 내가, 우리가 눈금 선이 방법으로 볼 수 원하는 정말되지 않습니다 :

나는이 순간에이 방법을 수행. 눈금 선을 그린 후 주석이 항상 그려 jfreecharts 소스 코드에 보면

Rectangle2D r2d = new Rectangle2D.Double(plot.getQuadrantOrigin().getX(), 
              plot.getQuadrantOrigin().getY(), 
              3.2, 9); 
    Area a1 = new Area(r2d); 
    Path2D.Float p = new Path2D.Float(); 
    p.moveTo(2.0, 5.0); 
    p.lineTo(2.5, 8.0); 
    p.lineTo(3.0, 5.0); 
    p.lineTo(2.5, 2.0); 
    p.closePath(); 
    Area a2 = new Area(p); 
    a1.subtract(a2); 

    XYShapeAnnotation a = new XYShapeAnnotation(a1, new BasicStroke(), 
               new Color(0xff0000), 
               new Color(0xff0000)); 
    renderer.addAnnotation(a, Layer.BACKGROUND); 
+0

어떤 코드 지금까지해야합니까? – wumpz

+0

현재 JFreeChart 데모에서 코드를 사용하고 있습니다. XYPolygonAnnotationDemo1 – jerome

답변

1

:

여기에 가능한 솔루션입니다. 따라서 눈금 선 앞에 그리는 것은 불가능합니다. XOR 모드 드로잉을 시도해 보겠습니다.

XYPolygonAnnotation a = new XYPolygonAnnotation(new double[]{2.0, 
      5.0, 2.5, 8.0, 3.0, 5.0, 2.5, 2.0}, null, null, 
       new Color(plotBackground.getRed(), plotBackground.getGreen(), 
      plotBackground.getBlue(), 255)) { 

      @Override 
      public void draw(Graphics2D g2, XYPlot plot, Rectangle2D dataArea, ValueAxis domainAxis, ValueAxis rangeAxis, int rendererIndex, PlotRenderingInfo info) { 
       Graphics2D g22 = (Graphics2D) g2.create(); 
       g22.setXORMode(new Color(0xff0000)); 
       super.draw(g22, plot, dataArea, domainAxis, rangeAxis, rendererIndex, info); 
      } 
     }; 

renderer.addAnnotation(a, Layer.BACKGROUND); 

xor 결합 도면을 사용하면 주석이 배경 및 눈금 선과 임의로 병합됩니다. 그래서 다음과 같은 결과가 나타납니다

simplegraph