1

プロットしている3つの時系列があり、XYLineAndShapeRendererが系列を表示するために使用する実際の形状として、数値1、3、および5を使用したいと思います。

JFreeChartの使用経験がなくても、次のいずれかの方法を理解できれば、自分のタスクを達成できると思います。

  1. 文字/グリフをjava.awt.Shapeに変換します
  2. 文字/グリフをImageIconに変換します
4

1 に答える 1

2

Font.createGlyphVectorとを使用してグリフのアウトラインを取得できますGlyphVector.getGlyphOutline

以下のメソッドGlyphVectorは、指定されたのStringを取得し、プロセスでを適用して、それらのアウトラインを取得します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。変換の例は次のとおりです。

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

これは、各グリフ(必要だと思います)をフォントサイズ40で大まかに中央揃えにする必要があります。より正確な中央揃えには、を使用GlyphMetricsして取得しGlyphVector.getGlyphMetric、必要な正確な翻訳を計算できます。

于 2012-04-14T04:36:39.297 に答える