JSXGraph: withLines option / setAttribute - PullRequest
       28

JSXGraph: withLines option / setAttribute

0 голосов
/ 12 октября 2019

Я хотел бы нарисовать многоугольник без его границ. Это работает, если я добавлю опцию {withLines: false} или {borders:{visible:false}} в вызове create(...). Однако, если я опускаю опцию в create и хочу изменить ее позже, используя setAttribute(...), строки все еще видны.

Это продемонстрировано в следующем коде (http://jsfiddle.net/1teoLz7p):

var board = JXG.JSXGraph.initBoard('box', {
        boundingbox: [-5,5,5,-5], 
        keepaspectratio: true, 
    });

var ABC = [board.create('point',[0,0]),
    board.create('point',[1,3]),
    board.create('point',[3,2])];

var poly1=board.create('polygon', ABC, {withLines:false});

var DEF = [board.create('point',[-1,0]),
    board.create('point',[-2,3]),
    board.create('point',[-4,2])];

var poly2=board.create('polygon', DEF);
poly2.setAttribute({withLines:false}); // doesnt work

Первый правый треугольник показан ожидаемым образом, но во втором левом треугольнике линии видны.

Как изменить эту опцию после вызова create ??

1 Ответ

0 голосов
/ 14 октября 2019

Вы правы, невозможно сделать строки невидимыми, просто набрав polygon.setAttribute(). Причина в том, что setAttribute пока не способен подобъекты, как в {borders {visible: false}}, и что другой подход - установка withLines:false - не работает, потому что атрибут withLines не является динамическим. Это в основном предотвращает создание линий по соображениям эффективности при построении многоугольника.

Мы обсудим, включим ли мы эти две проблемы в будущей версии. В настоящее время способ установить невидимые строки таков:

 var ABC = [[0,0], [1,3], [3,2]];
 var poly1=board.create('polygon', ABC, {withLines:false});
 var DEF = [[-1,0], [-2,3], [-4,2]];
 var poly2=board.create('polygon', DEF);

 var i;
 for (i = 0; i < poly2.borders.length; i++) {
     poly2.borders[i].setAttribute({visible: false});
 }
...