我需要在画布上绘制旋转的图像数据。 (这是一个 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(使用前将#替换为@)