如何检索 HTML5 Canvas 中的当前转换?
我有一长串画布 .scale()
、.translate()
、.save()
和 。我的代码中的restore()
命令。
有什么方法可以检索当前转换的一些表示,而不是自己记录所有内容,以便我可以找出屏幕坐标映射到转换坐标的位置。
这可能吗?
I've got a long sequence of canvas .scale()
, .translate()
, .save()
, and .restore()
commands in my code.
Is there any way to retrieve some representation of the current transformation, short of logging everything myself, such that I can find out where a screen coordinate maps to a transformed coordinate.
Is this possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
现在 Canvas 不会保存当前的变换矩阵(以您可以检索的方式)。你必须自己跟踪它。 :(
很多库都这样做,我确信唯一这样做的库是 cake js
以下是 cake.js 作者为 mozilla core (Firefox) 提交 bug 时的一些讨论:
https://bugzilla.mozilla.org/show_bug.cgi?id=408804
Right now Canvas does not save the current transformation matrix (in a way you can retrieve). You have to keep track of it yourself. :(
Lots of libraries do this, offhand the only one I'm certain that does it is cake js
Here's a bit of talk about it when the cake.js author filed a bug for mozilla core (Firefox):
https://bugzilla.mozilla.org/show_bug.cgi?id=408804
如果我没记错的话,Chrome Canary 最近添加了对 .currentTransform 属性的支持,该属性告诉您当前的转换矩阵。 IIRC 它返回一个 SVGMatrix 对象,该对象具有 a、b、c、d、e 和 f 属性。
If I'm not mistaken Chrome Canary has recently added support for the .currentTransform property which tells you the current transformation matrix. IIRC it returns an SVGMatrix object which has a, b, c, d, e and f properties.