RectangularRangeIndicator格式,如三角形使用dojo



我想在我的垂直标尺上添加一个指示器,但是指示器的格式像一个三角形,但是我想要一个大的线。

这是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);    
});

这是一个bug,将在下一个版本(1.8)中修复。X和1.9).

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

作为一种解决方法,您可以像这样重新定义坏方法:
myRangeIndicator._defaultVerticalShapeFunc = 
   function(indicator, group, scale, startX, 
            startY, endPosition, startThickness, endThickness, 
            fill, stroke){ ... }

参见http://jsfiddle.net/BFPuL/5/

我认为属性是startThicknessendThickness(最后没有"stroke")。但是,在将这些属性设置为期望的相等值时,我仍然没有得到一条实线。似乎有些奇怪(也许是一个bug)正在发生的方式,startThickness属性的处理。

这个问题引起了我的兴趣,所以我将尝试稍后留出一些时间来深入研究源代码,看看真正的问题是什么,但是现在我可以为您提供一个肮脏的解决方案。RectangularRangeIndicator使用dojox/gfx模块绘制,绘制的指示器轮廓由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.

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

最新更新