0

ズーム ツールを実行していますが、Sprite.setAttributes({scale: {…}); に問題があります。キャンバスの中心に配置...

http://teempla.com/sites/all/themes/teamplan/d2d/ - ここにあります。

鉛筆で 2 本以上の線を描いてみて、ズーム + を押すと、浮いていることがわかります。それは間違っています。そして奇妙なことに、彼らは相対的な中心に位置しています。

クリックイベントコードの写真:

click: function( e, t, eOpts ){
   d2dModel.set('zoom',d2dModel.get('zoom')+0.1);
  var draw = Ext.ComponentManager.get(Ext.select('.d2d-draw-panel',true).elements[0].id);
  for (var i in draw.surface.items.map){
     draw.surface.items.map[i].setAttributes({
        scale: {
           cx: d2dModel.get('width')/2,
           cy: d2dModel.get('height')/2,
           x: d2dModel.get('zoom'),
           y: d2dModel.get('zoom')
        }
     }, true);
 }
}

Raphael.JSで私はそれを作りました

el.transform('s'+zoom+','+zoom+','+w/2+','+h/2); 

そして、それはうまくいきます。

アイデアをありがとう!

4

1 に答える 1

1

setViewBox を使用してサーフェスをズームしてみてください

http://docs.sencha.com/ext-js/4-1/source/Surface.html#Ext-draw-Surface-method-setViewBox

私のプロジェクトで私がしたことはこれでした:

    var bbox = draw.surface.items.getBBox();
    draw.surface.setViewBox(bbox.x, bbox.y, draw.getSize().width / zoomValue, draw.getSize().height / zoomValue);

これは ext 4 ベータ版のときであることに注意してください。現在もほぼ同じはずです。

于 2012-12-05T08:49:30.957 に答える