2012-04-14 4 views
1

나는 플로팅하는 세 개의 시계열을 가지고 있는데, XYLineAndShapeRenderer가 시리즈를 표시하는 데 사용하는 실제 모양으로 숫자 1, 3 및 5를 사용하고 싶습니다.JFreeChart의 XYPlot에 포인트를 표시하는 데 사용되는 모양 아이콘으로 숫자를 사용할 수 있습니까?

  1. 가있는 java.awt에 문자/그림 문자 변환 :

    는 내가 다음 작업을 수행하는 방법을 알아낼 수 있다면, JFreeChart의를 사용 경험이없는 경우에도 나는 내 작업을 수행 할 수 있다고 생각

답변

2

당신은 얻을 수

  • 는 이미지 아이콘에 문자/문양을 변환 .Shape 문양 Font.createGlyphVectorGlyphVector.getGlyphOutline을 사용하여 설명합니다.

    아래의 방법은 지정된 String에 대해 GlyphVector을 검색하고 해당 윤곽을 검색하여 처리 중에 AffineTransform을 적용합니다. 기본적

    static Shape[] getGlyphShapes(Font font, String strGlyphs, AffineTransform transform) { 
    
        FontRenderContext frc = new FontRenderContext(null, true, true); 
        GlyphVector glyphs = font.createGlyphVector(frc, strGlyphs); 
    
        int count = glyphs.getNumGlyphs(); 
        Shape[] shapes = new Shape[count]; 
        for (int i = 0; i < count; i ++) { 
    
         // get transformed glyph shape 
         GeneralPath path = (GeneralPath) glyphs.getGlyphOutline(i); 
         shapes[i] = path.createTransformedShape(transform); 
        } 
        return shapes; 
    
    } 
    

    반환 된 글리프 형상 따라서, 폰트 크기 1 AffineTransform이다. 변환 예는 다음과 같습니다 대략 더 정확한 센터링을 위해 (40)의 글꼴 크기 (난 당신이 필요합니다 가정) 각 문양을 중심으로해야

      AffineTransform transform = new AffineTransform(); 
          transform.translate(-20, 20); 
          transform.scale(40, 40); 
    

    , 당신은 GlyphVector.getGlyphMetric을 통해 얻은 GlyphMetrics을 사용할 수 있으며, 필요한 정확한 번역을 계산하십시오.