0

我想画一个没有边界的多边形。如果我添加选项{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

第一个右三角形按预期显示,但在第二个左三角形中,线条可见。

创建调用如何更改此选项?

4

1 回答 1

0

你是对的,通过调用 just 是不可能使线条不可见的polygon.setAttribute()。原因是它还setAttribute不能像 in 这样的子对象,{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});
 }
于 2019-10-14T07:22:53.737 回答