2013-11-21 56 views
1

TL; DR:爲什麼圖像的位置不同?Fabric.js 1.3.12中的座標系已更改?

1.3.0和1.3.12之間的座標系似乎有些不同。下面是HTML文件test.html,我自己()與新克隆和構建fabric.js工作:

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8" /> 
    <title>test</title> 
    <script type="text/javascript" src="http://code.jquery.com/jquery-2.0.3.min.js"></script> 
    <script type="text/javascript" src="./fabric.js/dist/all.min.js"></script> 
    <script type="text/javascript" src="test.js"></script> 
</head> 
<body> 
    <canvas id="c"></canvas> 
</body> 
</html> 

和JavaScript文件test.js

$(function(){ 
    var canvas = new fabric.Canvas('c'); 
    canvas.setWidth(window.innerWidth); 
    canvas.setHeight(window.innerHeight); 
    fabric.Image.fromURL('test.png', function(img) { 
    var group = new fabric.Group([img], 
    { 
     hasBorders: false, 
     hasControls: false, 
     selectable: true, 
     evented: true, 
    }) 
    canvas.add(group); 
    }); 
}); 

的網頁看起來像

enter image description here

但是,如果我將fabric.js更改爲CDN上的版本,即1.3.0:

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8" /> 
    <title>test</title> 
    <script type="text/javascript" src="http://code.jquery.com/jquery-2.0.3.min.js"></script> 
    <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.3.0/fabric.min.js"></script> 
    <script type="text/javascript" src="test.js"></script> 
</head> 
<body> 
    <canvas id="c"></canvas> 
</body> 
</html> 

的網頁看起來像

enter image description here

第二種情況更有意義對我來說。它將圖像的中心放到(0,0)。但在第一種情況下,似乎將圖像中心設置爲(image_width, image_height)。那麼這是一個錯誤?或者是一個組的座標系統的特徵?

UPDATE:如果單純使用

$(function(){ 
    var canvas = new fabric.Canvas('c'); 
    canvas.setWidth(window.innerWidth); 
    canvas.setHeight(window.innerHeight); 
    fabric.Image.fromURL('test.png', function(img) { 
    canvas.add(img); 
    }); 
}); 

,圖像的左上角將被連接到(0,0)

enter image description here

更新2:OK,我需要手動設置{left: 0, top:0}爲組。但爲什麼?

回答

2

您所看到的是originX/originY默認值從「center」/「center」更改爲「left」/「top」。

對於幾乎任何以Fabric開始的人來說,這是一個非常混亂的行爲,我們終於擺脫了它。你可以看到在這的changelog重大更改(未發行邊緣的/ dev版本和最新的穩定1.3.0之間)

https://github.com/kangax/fabric.js/blob/master/CHANGELOG.md

originX/originY代表什麼左/對象的頂部值相。所有對象的左邊/頂部都是相對於其中心的;現在我們正在使用更常見的左/頂角系統。