contesti Canvas 2D di Firefox hanno (non standard) e mozCurrentTransform Proprietà mozCurrentTransformInverse.
Il WhatWG ha ora definito le proprietà currentTransform e currentTransformInverse (il primo è anche scrivibile). Ecco la parte rilevante della specifica:
http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#transformations
Tuttavia questi probabilmente non saranno universalmente implementato nei browser per qualche tempo ancora, quindi se volete la portabilità si dovrà ricadere il monitoraggio manualmente la matrice come @Dave e @James dicono.
Ogni uomo e il suo cane sembra aver scritto un tracciatore di matrici con trasformatore Canvas. Ho appena dato un'occhiata a quello di @Dave Lawrence; Penso che il mio sia migliore in alcuni modi, anche se sono sicuro che è anche inferiore in altri modi.
- La mia non richiede alcuna modifica al codice utente JS - esso modifica i prototipi di tela e di contesto, quindi basta aggiungere una sceneggiatura tag e sei a posto.
- Intercetta l'impostazione della proprietà currentTransform.
- Cerca solo di fare quello che deve fare.
Funziona negli ultimi Chrome e Firefox, ma non l'ho ancora testato in IE.
ho messo la mia in un jsfiddle, con una semplice dimostrazione: http://jsfiddle.net/XmYqL/1/
Qui è un blocco di codice per placare StackOverflow quindi mi permette di link a jsfiddle (??):
code, code, wonderful code
I finalmente trovato il tempo di caricamento di mia polyfill a GitHub:
https://github.com/supermattydomain/canvas.currentTransform.js
so che è non perfetto, ma mi piacerebbe davvero vederci lavorare tutti insieme per implementare One True Solution a questo problema. Non mi interessa se è mio o di qualcun altro. Questo angolo di JavaScript/HTML5/Canvas è troppo simile ai Balcani: un mare di soluzioni parziali. Per favore, tutti, forchetta il mio, aggiungi le tue modifiche e inviami richieste pull, o inviami il tuo URL in modo da poter unire il tuo codice, o sostituire il mio all'ingrosso con il tuo, o qualsiasi altra cosa. Questo è uno stupido problema che voglio solo inchiodare. Se lavoriamo insieme, possiamo farlo.
grazie. questo è esattamente quello che ho fatto, ho solo pensato che li stanno facendo in modo nativo, e io che sto facendo le operazioni è solo facendo il lavoro per niente. –