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

这是一个错误,它将在下一个版本(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 (最后没有“笔画”)。 但是,在将这些属性设置为与预期相同的值时,我仍然没有得到一个实线。 似乎有些奇怪的事情(可能是一个错误)正在以处理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. 

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