65

dojoのgetBoundingBox()のドキュメントには次のように書かれています。

図形のバウンディングボックスを返します。テキストシェイプはポイントベースのオブジェクトであるため、境界ボックスを定義しません。

理解できません。Web用のベクターグラフィックスの適切な実装には、テキストオブジェクト(raphaelJSおよびjQuery SVG)のバウンディングボックスが含まれます。ここで、「ポイントベースのオブジェクト」とはどういう意味ですか?

Groupオブジェクトのバウンディングボックスの参照が見つかりませんでしたが、最新のDojoバージョンを使用すると、GroupsにもgetBoundingbox戻りますnull

長方形のバウンディングボックスは自分で簡単に作成できますが、バウンディングボックスが必要な本当に問題のある形状は、グループとテキストだけです。

私は次のように道場のホットパッチを終了しました:

dojox.gfx.Text.prototype.getBoundingBox = function() { return this.rawNode.getBBox();});
dojox.gfx.Group.prototype.getBoundingBox = function() { return this.rawNode.getBBox();});

もちろん、これはSVG出力フロントエンドでのみ機能します。

しかし、私は何かが足りないのだろうか?それを行うためのより良い方法はありますか?

4

1 に答える 1

2

Groupオブジェクトのバウンディングボックスの参照が見つかりませんでしたが、最新のDojoバージョンを使用すると、getBoundingboxはグループに対してもnullを返します。

この問題はこのバグ修正に関連していますか?私にはそれのように聞こえます。Changed 7 months ago by pruzand修正済みとしてマークされました

http://bugs.dojotoolkit.org/ticket/7019

アップデート2012-07-24:リリース-1.8.0rc1をローカルにダウンロードし、解決されたチケットで同じテストをセットアップしました。これは確かに1.8で修正されており、グループでnullを返すgetBoundingBoxは、チケットに記載されているように解決されます。テストスクリプトは正常に次を返します。

bbox of group: {"x":0,"y":2,"endX":238,"endY":379,"width":238,"height":377}
transformed bbox: [{"x":277.7302117816355,"y":152.5448441073243},{"x":512.114456998541,"y":193.87311039205372},{"x":446.64909401810826,"y":565.1456332776561},{"x":212.26484880120276,"y":523.8173669929267}]

また、このツイッターの投稿によると、1.8は1、2週間でリリースされる予定です。

于 2012-07-24T03:08:44.917 に答える