我有一个html cavas的图像。我希望能够将图像旋转90度,但我似乎无法找到如何旋转整个画布图像的示例,只能在画布上旋转一个对象。
有没有人有示例代码将整个画布旋转90度?
我接受了下面的anwser,但希望提供其他示例代码:http://jsfiddle.net/VTyNF/1/
<canvas id="myCanvas" width="578" height="200"></canvas>
<script>
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
context.translate(canvas.width/2,canvas.height/2)
context.rotate(90 * (Math.PI / 180));
context.beginPath();
context.rect(188 - canvas.width/2, 50 - canvas.height/2, 200, 100);
context.fillStyle = 'yellow';
context.fill();
context.lineWidth = 7;
context.strokeStyle = 'black';
context.stroke();
</script>
答案 0 :(得分:2)
说你的canvas
元素有id
“foo”。在JavaScript中,您可以执行以下操作:
var canvas = document.getElementById('foo'),
context = canvas.getContext('2d');
// Rotates the canvas 90 degrees
context.rotate(90 * (Math.PI / 180));
答案 1 :(得分:2)
在绘制画布之前,您必须应用此旋转。您无法旋转已绘制的任何内容。
所以:
要旋转画布,content.rotate()
需要一个弧度值。首先,让我们通过使用:
function getRadianAngle(degreeValue) {
return degreeValue * Math.PI / 180;
}
您可能希望在旋转之前先转换画布,以便正确设置其原点。
context.translate(context.width/2,context.height/2);
一旦我们知道了我们想要的价值,我们只需在绘制任何内容之前旋转画布!
请注意,在您的示例中,您绘制的矩形也在context.rect(
X,Y,W,H)的前两个参数中偏移。
我发现将宽度设置为变量更容易,然后进行简单的数学计算以自动重新定位框,现在注意它完全位于中心,并且旋转得很好!
答案 2 :(得分:0)
您可以使用CSS将<canvas>
元素与transform: rotate(90deg);
一起轮播吗?
答案 3 :(得分:0)
您可以通过操纵像素数据轻松地将图像旋转90度。如果你的画布不是正方形,你将不得不做出一些关于“正确”答案的选择。
使用getImageData
功能检索像素,以常规方式操作它们,并使用putImageData
显示结果。