1

想象一下,我想要转换一个画布上下文坐标空间来包含某个边界框,并且我正在写一个测试。我可以重新使用html5 canvas元素的转换吗?

是否可以真正“用”的情境的改造,有点像这样:

function toBoundingBox(context, upleft, botright) { 
    // ... 
} 

// and the test function: 
function test(canvaselement) { 

    var canvasbox = { 
     topleft: {x:0, y:0}, 
     botright: {x:canvaselement.width, y:canvaselement.height} }; 

    var ctx = canvaselement.getContext("2d"); 
    toBoundingBox(ctx, {x:-1,y:-1}, {x:2, y: -5}); 

    var thetransform = ctx.getTransform(); 
    assert(thetransform({x:-1,y:-1}) == canvasbox.topleft); 
    assert(thetransform({x:2, y:-5}) == canvasbox.botright); 

} 

或者是有任何其他方式来写这个测试功能?

回答

2

不幸的是,没有原生的方式来访问转换。你需要自己实现这个。有关更多信息,请参阅HTML5 Canvas get transform matrix?。希望这有助于!

+0

你说得对,但是...... http://stackoverflow.com/a/7395910/6610,编辑2:'当前转换()'是在whatwg规范中添加的。 (cfr。http://lists.w3.org/Archives/Public/public-whatwg-archive/2012Mar/0269.html) – xtofl

+0

是的,他们将这一点加入规范真是太棒了!不过这是针对较新的浏览器。但这可能会取决于你的目标。 :) –