2016-04-04 4 views
3

Wie kann ich eine bestimmte Position des Canvas berechnen (z. B. Bottom Center), nachdem Sie die Position des Ansichtsfensters und die Zoomstufe geändert haben?Absolute Koordinaten in einem Canvas mit Panning & Zoom berechnen

Momentan versuche ich so etwas. Aber es funktioniert nur für das Ansichtsfenster.

canvasPoint = { 
    left:(canvas.width/2)-canvas.viewportTransform[4], 
    top: canvas.height-canvas.viewportTransform[5] 
} 

Wenn ich oder Zoom Verkleinern In, bin ich nicht in der Lage, den neuen Mitte-Tiefpunkt für die Leinwand zu finden.

Antwort

3

Sie müssen die Matrizen verwenden. Ihr Boden - Zentrum Ecke hat die Koordinaten:

var p = {x: canvas.width/2, y: canvas.height}; 

Ihre Zoom und Schwenk durch die viewportTransfom dargestellt wird:

var invertedMatrix = fabric.util.invertTransform(canvas.viewportTransform); 
var transformedP = fabric.util.transformPoint(p, invertedMatrix); 

Und Sie getan werden sollte. transformedP sollte die absoluten Koordinaten des Punkts haben, den Sie in einer gezoomten und/oder geschwenkten Ansicht als Mitte-unten sehen.

+0

Es funktioniert gut, vielen Dank. –