Ich schreibe ein Skript mit Fabric.js, um ein Bild an der aktuellen Mausposition zu vergrößern. Ich habe Fortschritte gemacht, aber irgendwo ist ein Fehler.Bild zoom zentriert auf Mausposition
Fall 1: die Maus an einem Punkt halten und mit dem Mausrad zoomen.
Ergebnis: Funktioniert perfekt, Bild zoomt bei diesem bestimmten Pixel.
Fall 2: Zoomen Sie ein wenig an einer Position (3-5 Mal mit dem Mausrad), bewegen Sie die Maus an eine neue Position und zoomen Sie hinein.
Ergebnis: Funktioniert gut für den ersten Punkt, aber nach dem Verschieben zu einem anderen Punkt und Zoomen ist die Bildposition falsch.
ist mein Code in dieser Geige:
https://jsfiddle.net/gauravsoni/y3w0yx2m/1/
Ich vermute, es ist etwas falsch mit dem Bild Positionierlogik ist:
imgInstance.set({top:imgInstance.getTop()-newMousY,left:imgInstance.getLeft()-newMousX});
Was nicht in Ordnung ist?
Warum nicht die Zoom- und Schwenkfunktion des Canvas verwenden? Oder musst du nur das Bildobjekt zoomen und sonst nichts? Überprüfen Sie dies: http: // fabricjs.com/kitchensink/# zoom (Verwenden Sie die Bildlaufleiste, um zu zoomen) Mit dem Zoomen auf der Leinwand können Sie bei Bedarf mehr Objekte im Canvas zoomen, ohne Berechnungen durchzuführen. Ich kann eine Geige machen, wenn Sie diese Möglichkeit erkunden möchten. – AndreaBogazzi
@AndreaBogazzi Ich muss an dieser bestimmten Position zoomen, wo die Maus platziert ist, skaliert die Canvas-Scale-Funktion nur das Bild –
Ja, ich spreche über FABRICJS Pan-to-Point und Zoom-to-Point-Funktion. Nicht Leinwand eins. Ich sehe, dass Sie Fabricjs dafür verwenden. – AndreaBogazzi