如何在旋转的画布上使用 putImageData()?

2023-12-26

我需要在画布上绘制旋转的图像数据。 (这是一个 GWT 项目,上下文是一个实例com.google.gwt.canvas.dom.client.Context2d.)

我正在尝试使用以下代码:

context.rotate(rotation);
context.putImageData(data, x, y);
context.rotate(-rotation);

但该代码不会绘制旋转图像。如果我像这样更改代码:

context.rotate(rotation);
context.fillRect(x, y, 100, 50);
context.rotate(-rotation);

然后将在画布上绘制一个旋转的矩形。这是 API 错误还是我的错?我可以做什么来纠正它?

我也尝试过使用drawImage()代替putImageData()测试该方法的工作原理。它可以很好地旋转。但我需要画画ImageData我从另一张画布上取下来的。有没有快速翻译的方法ImageData to ImageElement?以什么单位表示ImageData返回它的大小?


putImageData不受变换矩阵的影响。

这是根据规范的命令:

当前路径、变换矩阵、阴影属性、全局 Alpha、剪切区域和全局合成运算符不得影响 getImageData() 和 putImageData() 方法。

你能做的是putImageData到内存中的画布,然后

context.rotate(rotation);
context.drawImage(inMemoryCanvas, x, y)
context.rotate(-rotation);

到你的常规画布上。

NOTE:从您的编辑来看,您似乎暗示您可能只是从一个画布绘制到另一个画布,而不更改任何图像数据。如果是这种情况,绝对只需使用drawImage(othercanvas, x, y)而不是使用getImageData and putImageData如果可能的话。使用drawImage速度要快得多。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在旋转的画布上使用 putImageData()? 的相关文章

随机推荐