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/上的此解决方法
我认为属性是startThickness
和endThickness
(最后没有“笔画”)。 但是,在将这些属性设置为与预期相同的值时,我仍然没有得到一个实线。 似乎有些奇怪的事情(可能是一个错误)正在以处理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.
这似乎是画直线(这实际上是极薄形状的边界)。 看看它在一个真实的例子中的样子 。 同样,我理解这不是最好的解决方案,因为它更像是一个肮脏的技巧,但它是一种解决代码中出现范围指示器的错误的方法。