fabricjs, Nach Objekt Drehen ist es möglich,
Objekt Nach dem Drehen links, oben und rechts Position viritual Rectagle zu bekommen, ist es möglich, links, oben und rechts Position des virtuellen Rechtecks zu erhalten?
fabricjs, Nach Objekt Drehen ist es möglich,
Objekt Nach dem Drehen links, oben und rechts Position viritual Rectagle zu bekommen, ist es möglich, links, oben und rechts Position des virtuellen Rechtecks zu erhalten?
Was Sie suchen die ist rect begrenzende des Objekts:
getBoundingRect (ignoreVpt) → {Object} Gibt Koordinaten umschließende Rechteck des Objekts (links, oben, Breite , Höhe) ist die Box als ausgerichtet an der Leinwandachse vorgesehen.
Rückkehr: Objekt mit links, oben, Breite, Höhe Eigenschaften Typ Objekt
Referenz: fabricjs sourcecode
var canvas = this.__canvas = new fabric.Canvas('c');
fabric.Object.prototype.transparentCorners = false;
var rect = new fabric.Rect({
left: 120,
top: 30,
width: 100,
height: 100,
fill: 'green',
angle: 20
});
canvas.on('after:render', function() {
canvas.contextContainer.strokeStyle = '#555';
canvas.forEachObject(function(obj) {
var bound = obj.getBoundingRect(); // <== this is the magic
console.log(bound);
canvas.contextContainer.strokeRect(
bound.left,
bound.top,
bound.width,
bound.height
);
});
});
canvas.add(rect);
<script src="https://rawgit.com/kangax/fabric.js/master/dist/fabric.js"></script>
<canvas height=200 width=300 id="c" style="border:1px solid black"></canvas>
Da das after:render
Ereignis nach jedem Rahmen kontinuierlich abgefeuert wird gerendert wird, können Sie die aktualisierte Begrenzungsbox Ihres Objekts für jedes Update in Position, Rotation sehen und Dimensionen.
var canvas = this.__canvas = new fabric.Canvas('c');
fabric.Object.prototype.transparentCorners = false;
var rect = new fabric.Rect({
left: 120,
top: 30,
width: 100,
height: 100,
fill: 'green',
angle: 20
});
canvas.add(rect);
canvas.on('after:render', function() {
canvas.contextContainer.strokeStyle = '#555';
var ao = canvas.getActiveObject();
if (ao) {
var bound = ao.getBoundingRect();
canvas.contextContainer.strokeRect(
bound.left,
bound.top,
bound.width,
bound.height
);
console.log(bound);
}
});
<script src="https://rawgit.com/kangax/fabric.js/master/dist/fabric.js"></script>
<canvas height=200 width=300 id="c" style="border:1px solid black"></canvas>
Als Referenz Working with events
Hey! Danke Inferon. Genau das habe ich gesucht. Ich werde das heute integrieren. –
Hallo Inferon. Ich habe die Lösung ausprobiert. Das einzige Problem, dem ich gegenüberstehe, ist, ob es sich beim Ziehen eines Objekts nicht ändert. Die Coords kehren nur zurück, wenn ich die Maustaste loslasse und erneut ziehe. Ich möchte Echtzeit-Coords ziehen. Hier ist mein Code. CANVAS.on (. 'Objekt: rendern', function() { ob = Math.round (Math.floor (activeObject.getBoundingRect(), linke)); console.log ("LEFT COORDS" + ob) ; }) –
Hallo Inferon, Dies ist genau ich tat, aber Problem war fabric.js Bibliothek. Wenn ich Ihre Quelldatei (rawgit.com) verwendet habe, funktioniert das jetzt einwandfrei (kann das Versionsproblem sein). Vielen Dank für die Rettung meiner Stunden. –
Btw, wie etwa einfache alte 'Math.sin' /' Math.cos' und Pythagoras? Das Rotieren eines Objekts ändert seine Größe nicht. – klenium