2

http://raphaeljs.com/graffle.html(1.5.2と2.1の両方で機能)のようなドラッグ可能なグラフを作成しようとしていますが、ボックスにテキストを含めたいと思います。

別の質問の提案を使用してテキストを追加しました:Raphael javascriptライブラリのオブジェクトを組み合わせるにはどうすればよいですか?

このソリューションはRaphaelJS1.5.2でうまく機能しますが、RaphaelJS2.1では機能しません。

jsFiddleの例: http ://jsfiddle.net/ScBtZ/

私が見つけた唯一の違いElement.getBBox()は、非常に異なる結果を返すことです。

サンプル:

1.5.2では:

SVGRect
  height: 40
  width: 100
  x: 526.5
  y: 25

2.1では:

Object
  height: 500780.9482062537
  width: 1009980
  x: 526.51
  x2: 1010506.51
  y: -399735.94795512746
  y2: 101045.00025112627

v1.5からv2への変更について何かが足りないのですか、それともこの奇妙なBBoxはバグですか?この問題を解決する方法はありますか?

ありがとう!

4

5 に答える 5

2

Raphael 2 getBBoxは少しバグがあるかもしれませんが、あなたの場合、データは間違っています。数字の周りの「」を削除してみてください。

http://jsfiddle.net/nhatcher/ScBtZ/9/

良い手本!

(他のソリューションはVMLで壊れていることに注意してください)

于 2012-04-20T07:15:27.217 に答える
2

回答が受け入れられた後、ここにたどり着きましたが、まだいくつかの問題がありました。あなたが私のような人なら、Raphael.js GitHub から最新の開発バージョンを取得することをお勧めします: https://github.com/DmitryBaranovskiy/raphael/

ラファエルはアンドレアスの回答を取り入れたようです(回答が書かれたときのように1300ではなく、1972行目)。Raphael の最新の開発リリースは私にとってはうまくいきました。

于 2013-04-16T19:27:05.723 に答える
1

getBBoxRaphael では、ネイティブ メソッドをカスタム実装に置き換える試みがあったようです。これの背後にある理由は、ネイティブの getBBox メソッドにいくつかのバグがあり、一部の形状に対して不適切な結果を返すことが考えられます。もう 1 つの理由は、ブラウザーの移植性かもしれません。VML に getBBox メソッドがあるかどうかはわかりません。

ただし、ご指摘の値からすると、このカスタム実装には欠陥があるようです。Raphael 2.x のネイティブ getBBox を次のコードで使用できます。

var bb1 = obj1.node.getBBox(),
    bb2 = obj2.node.getBBox(),

私はそれをテストし、良さそうです:http://jsfiddle.net/ScBtZ/2/

于 2012-04-09T21:24:37.173 に答える
1

BBoxをtransformと組み合わせて使用​​している場合、Raphael にはバグがありました。自分に合った修正を見つけました。

raphael.js の 1300 行目

var pathDimensions = R.pathBBox = function (path) {
    var pth = paths(path);
    if (pth.bbox) {
        return clone(pth.bbox) ; // FREEGROUP FIX!!!!!!
    }
    if (!path) {
        return {x: 0, y: 0, width: 0, height: 0, x2: 0, y2: 0};
    }
于 2012-05-16T08:32:40.660 に答える
0

アンドレアスの答えは正しいです...

https://github.com/DmitryBaranovskiy/raphael/issues/543でも参照されています

getBBox()関数が内部的に変更されるため、getBBox()関数を数回以上再利用する必要がある場合は、cloneが適切な修正です...。

ところで:Raphael.jsのDimitryのおかげで、それは本当に素晴らしい作品です!!

于 2012-05-30T08:58:37.490 に答える