как использовать разные формы для преобразования фигуры Юнга

Я использую библиотеку jung, чтобы нарисовать свою хватку, поэтому мне было интересно, есть ли способ создать вершину в другой форме, а не создавать эллипс. Например, я хочу восьмиугольник. Вот как я задаю форму:

    Transformer<String,Shape> vertexSize = new Transformer<String,Shape>(){

    @Override
    public Shape transform(String str) {
        Ellipse2D circle = new Ellipse2D.Double(-5, -5, 10, 10);
        if(drugnames.contains(str)){
            return AffineTransform.getScaleInstance(3,3).createTransformedShape(circle);
        }
        else{
            return AffineTransform.getScaleInstance(1,1).createTransformedShape(circle);
        }

        // TODO Auto-generated method stub
    }
};

person Ahmet Tanakol    schedule 13.12.2012    source источник
comment
Как насчет Polygon?   -  person brimborium    schedule 13.12.2012
comment
Я пытался использовать полигон, но это дало мне совершенно не связанную форму.   -  person Ahmet Tanakol    schedule 13.12.2012
comment
Покажите нам, что вы сделали с Polygon, а также покажите нам несвязанную форму. Потому что я думаю, что это то, что вам нужно использовать...   -  person brimborium    schedule 13.12.2012
comment
Вы добавляете преобразователь в свой RenderContext?   -  person sdasdadas    schedule 14.12.2012


Ответы (1)


VisualizationViewer.getRenderContext().setVertexShapeTransformer(vst)

где vst - это Transformer<V, Shape>.

AbstractVertexShapeTransformer can do a lot of the heavy lifting for you.

См. PluggableRendererDemo примеры этих вещей в действии (исходный код является частью дистрибутива).

person Joshua O'Madadhain    schedule 14.12.2012