5

そのため、Raphael でテキスト文字列のサイズを取得しようとしていますが、それができないようです。ドキュメントにはそう書かれていますが、

.attr('width');

はオプションです...幅も設定できません。

ここにフィドルがあります

これは私が試してきたことです...さらに他の粗雑な方法(Jqueryを使用しても)

var page = Raphael("drawing_board");

    // start, move, and up are the drag functions
    start = function () {
        // storing original coordinates
        this.ox = this.attr("x");
        this.oy = this.attr("y");
        this.attr({opacity: .5});
        console.log( this.attr('width') ); //THIS IS WHERE I AM TRYING TO GET THE WIDTH
    },
    move = function (dx, dy) {
        // move will be called with dx and dy

            nowX = Math.min(600, this.ox + dx);
            nowY = Math.min(400, this.oy + dy);
            nowX = Math.max(0, nowX);
            nowY = Math.max(0, nowY);
            this.attr({x: nowX, y: nowY });

    },
    up = function () {
        // restoring state
        this.attr({opacity: 1});

    };   

    page.text(200, 50, "TEXT 1").attr({ cursor: "move", 'font-size': 16  , fill: '#3D6AA2'}).drag(move, start, up);
    page.text(200, 200, "TEXT 2").attr({ cursor: "move", 'font-size': 16  , fill: '#3D6AA2'}).drag(move, start, up);

たぶん私は何か他のものを使う必要があります

this.attr('width' : 30); //To Set
this.attr('width'); //To Get
4

3 に答える 3

11

以下を使用できます。

this.node.getBBox().width

this.node-> Raphael 要素に関連付けられた SVG 要素を取得します
getBBox()-> 境界ボックス

getBBoxラファエルの方法を直接使用することもできます。

this.getBBox().width

svg テキスト要素に width 属性がないため、このアプローチは機能しません。

于 2013-04-11T19:54:00.490 に答える
3

this.getBBox()は、計算された bbox を取得するための RaphaelJS メソッドでx y x1 x2 widthあり、heightプロパティを持つオブジェクトを返します。Raphaeljs と同じようにクロス ブラウザーです。

于 2013-04-11T20:24:25.610 に答える