我有一个装有照片的画布元素。单击链接时,将执行以下操作:
var ctx = canvas.getContext("2d");
ctx.scale(-1,1);
ctx.drawImage(canvas, canvas.width * -1, 0, canvas.width, canvas.height);
这在第一次点击,第三次点击,第五次点击等时按预期工作(图像水平翻转)。在第二次点击,第四次点击,第六次点击等时,没有任何反应。
关于如何让每次点击都能使用的任何想法?
答案 0 :(得分:2)
是的,问题是因为你在绘制图像后没有将画布比例恢复为1,1所以基本上第一次调用该事件时你的画布比例会变成-1,1下一个时间它会是1,1但你需要它总是-1,1。那是因为你是直接从画布上绘制图像而不是从图像元素中绘制图像,所以每次都需要翻转它。
在缩放前尝试使用ctx.save()
,在绘制图像后尝试使用ctx.restore()
。或者在绘制图像后再次调用ctx.scale(-1, 1)
。或者你可以在事件之外进行缩放(但是在你第一次将图像绘制到画布上之后)如果你的画布仅用于此。
答案 1 :(得分:1)