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

startThicknessプロパティはand endThickness(最後に「ストローク」なし)だと思います。ただし、これらのプロパティを期待どおりに等しい値に設定すると、まだ実線が1つも表示されません。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.

これは直線を描いているように見えます (これは実際には非常に細い形状の境界です)。実際の例でどのように見えるかを確認してください。繰り返しますが、これは汚いトリックであるため、最善の解決策ではないことは理解していますが、範囲インジケーターをレンダリングするコードのバグと思われるものを回避する方法です。

于 2013-04-01T18:38:18.553 に答える
2

これはバグです。次のリリース (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/でこの回避策の実際を参照してください。

于 2013-04-02T09:00:58.213 に答える