Firefox Canvas 2D-Kontexten (Nicht-Standard) mozCurrentTransform und mozCurrentTransformInverse Eigenschaften.
Die WhatWG hat jetzt currentTransform- und currentTransformInverse-Eigenschaften definiert (wobei erstere schreibbar ist). Hier ist der relevante Teil der Spezifikation:
http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#transformations
Allerdings werden diese wahrscheinlich nicht überall in Browsern für einige Zeit noch implementiert werden, so dass, wenn Sie Portabilität wollen Sie die Verfolgung der Matrix zurückgreifen müssen manuell als @Dave und @James sagen.
Jeder Mann und sein Hund scheinen einen solchen Canvas-Transform-Matrix-Tracker geschrieben zu haben. Ich habe mir gerade @ Dave Lawrences angesehen; Ich denke, meiner ist in einigen Punkten besser, obwohl ich mir sicher bin, dass er auch auf andere Weise unterlegen ist.
- -Mine erfordert keine Änderungen an Benutzern JS Code - es ändert die Leinwand und Rahmen Prototypen, so dass Sie nur einen Skript -Tag hinzufügen und Sie sind gut zu gehen.
- Es fängt das Setzen der Eigenschaft currentTransform ab.
- Es versucht nur schwer zu tun, was es tun muss.
Es funktioniert in den neuesten Chrome und Firefox, aber ich habe es noch nicht in IE getestet.
Ich habe Mine in einem jsfiddle, mit einer einfachen Demonstration: http://jsfiddle.net/XmYqL/1/
Hier ist ein Codeblock Stackoverflow zu besänftigen, damit es mir jsfiddle lässt verlinken (??):
code, code, wonderful code
I endlich um meine polyfill zu GitHub Hochladen:
https://github.com/supermattydomain/canvas.currentTransform.js
ich weiß, es ist nicht perfekt, aber ich würde wirklich gerne sehen, dass wir alle zusammenarbeiten, um One True Solution für dieses Problem zu implementieren. Es ist mir egal, ob es mein oder eines anderen ist. Diese Ecke von JavaScript/HTML5/Canvas ist zu sehr wie der Balkan: ein Meer von Teillösungen. Bitte, jeder, meins, fügen Sie Ihre Änderungen hinzu und senden Sie mir Pull-Anfragen, oder senden Sie mir Ihre URL, damit ich Ihren Code einbinden kann, oder ersetzen Sie meinen Großhandel mit Ihren, oder was auch immer. Das ist ein dummes Problem, das ich nur nageln möchte. Wenn wir zusammenarbeiten, können wir es schaffen.
danke. Das ist genau das, was ich gemacht habe, dachte nur, dass sie das von Haus aus machen, und ich mache die Arbeit nur für nichts. –