下の要素を固定位置で拡大縮小したい。
<path id="container_svg_rectsymbol1" fill="red" stroke-width="1" stroke="Gray" d="M 73.1111111111111 -71.75 L 83.1111111111111 -71.75 L 83.1111111111111 -61.75 L 73.1111111111111 -61.75 L 73.1111111111111 -71.75" transform="scale(1)"/>
スケーリングを開始すると、ある場所から別の場所に移動します。オブジェクトを移動したくありません。オブジェクトのサイズを拡大したいだけです。
以下のリンクを参考にしました。
http://commons.oreilly.com/wiki/index.php/SVG_Essentials/Transforming_the_Coordinate_System
固定スケーリングを行う方法は?
要素をアニメーション化したい、つまり固定位置でサイズを拡大したい。私は次の方法で実装しました。しかし、それは要素を原点から動かします。以下のコードを参照してください。
var box = element.getBBox();
var scaleVal=null, x=null, y=null;
$(element).animate(
{
scale: 1,
centerX:box.x+(4*transX),
centerY:box.y+(4*transY)
},
{
duration: 4000,
step: function(now,fx) {
if (fx.prop == "scale") {
scaleVal = now;
} else if (fx.prop == "centerX") {
x = now;
} else if (fx.prop == "centerY") {
y = now;
}
if(!sf.util.isNullOrUndefined(scaleVal) && !sf.util.isNullOrUndefined(x) && !sf.util.isNullOrUndefined(y)) {
$(element).attr("transform", "translate("+(-x*(scaleVal-1))+","+(-y*(scaleVal-1))+")scale(" + scaleVal + ")");
}
}
)
中心点でのスケーリングについては、以下のリンクを参照してください。
http://commons.oreilly.com/wiki/index.php/SVG_Essentials/Transforming_the_Coordinate_System
ただし、原点から開始し、要素を拡大します。
ありがとう、
シヴァ