2

我正在尝试向我的垂直仪表添加一个指标,但指标的格式就像一个三角形,但我希望它是一条大线。

这是JSFIDDLE示例。

编码 :

 require(['dojo/parser', 'dojox/dgauges/components/default/VerticalLinearGauge','dojox/dgauges/RectangularRangeIndicator', 'dojo/domReady!'], function (parser, VerticalLinearGauge) {
    parser.parse();
    var ri = new dojox.dgauges.RectangularRangeIndicator();
    ri.set("start",0 );
    ri.set("value", 30);
    ri.set("startThickness",100);
    ri.set("endThickness",100);
    gauge.getElement("scale").addIndicator("ri", ri, false);    
});
4

2 回答 2

2

我认为属性是startThicknessendThickness(最后没有“中风”)。但是,当将这些属性设置为预期的相等值时,我仍然没有得到一条实线。startThickness处理属性的方式似乎发生了一些奇怪的事情(可能是错误) 。

这个问题让我很感兴趣,所以我稍后会尝试留出一些时间来深入研究源代码以查看真正的问题是什么,但现在我可以为您提供一个肮脏的解决方法。使用dojox/gfx模块绘制 RectangularRangeIndicator,绘制的指标轮廓由stroke属性控制。因此,如果您愿意,您可以执行以下操作:

var ri = new dojox.dgauges.RectangularRangeIndicator();
ri.set("start",0 );
ri.set("value", 30);
ri.set("startThickness", 0);
ri.set("endThickness", 0);
ri.set("stroke", {color: "red", width: 2.5});
ri.set("paddingLeft", 7); // Default is 10, set this to whatever works for you.

这看起来会画出一条直线(这实际上是一个非常薄的形状的边界)。看看它在一个真实例子中的样子。同样,我知道这不是最好的解决方案,因为它更像是一个肮脏的技巧,但它是一种解决呈现范围指示器的代码中似乎存在错误的方法。

于 2013-04-01T18:38:18.553 回答
2

这是一个错误,它将在下一个版本(1.8.x 和 1.9)中修复。

https://github.com/dmandrioli/dgauges/issues/15

作为一种解决方法,您可以像这样重新定义 bad 方法:

myRangeIndicator._defaultVerticalShapeFunc = 
   function(indicator, group, scale, startX, 
            startY, endPosition, startThickness, endThickness, 
            fill, stroke){ ... }

http://jsfiddle.net/BFPuL/5/上查看此解决方法

于 2013-04-02T09:00:58.213 回答