HTML Canvas水平翻转仅在每次点击时起作用

时间:2011-04-27 19:13:54

标签: html5 canvas

我有一个装有照片的画布元素。单击链接时,将执行以下操作:

var ctx = canvas.getContext("2d");
ctx.scale(-1,1);
ctx.drawImage(canvas, canvas.width * -1, 0, canvas.width, canvas.height);

这在第一次点击,第三次点击,第五次点击等时按预期工作(图像水平翻转)。在第二次点击,第四次点击,第六次点击等时,没有任何反应。

关于如何让每次点击都能使用的任何想法?

2 个答案:

答案 0 :(得分:2)

是的,问题是因为你在绘制图像后没有将画布比例恢复为1,1所以基本上第一次调用该事件时你的画布比例会变成-1,1下一个时间它会是1,1但你需要它总是-1,1。那是因为你是直接从画布上绘制图像而不是从图像元素中绘制图像,所以每次都需要翻转它。

在缩放前尝试使用ctx.save(),在绘制图像后尝试使用ctx.restore()。或者在绘制图像后再次调用ctx.scale(-1, 1)。或者你可以在事件之外进行缩放(但是在你第一次将图像绘制到画布上之后)如果你的画布仅用于此。

答案 1 :(得分:1)

这适用于每次点击:

http://jsfiddle.net/4kcjn/2/

问问自己,它和你之间有什么不同?

它可能与图像负载有关。尝试没有图像的你。它还有同样的问题吗?