gpt4 book ai didi

HTML5 Canvas 旋转图像

转载 作者:技术小花猫 更新时间:2023-10-29 11:32:44 26 4
gpt4 key购买 nike

jQuery('#carregar').click(function() {
var canvas = document.getElementById('canvas');
var image = document.getElementById('image');
var element = canvas.getContext("2d");
element.clearRect(0, 0, canvas.width, canvas.height);
element.drawImage(image, 0, 0, 300, 300);
});

jsfiddle.net/braziel/nWyDE/

我无法将图像向右或向左旋转 90°。

我在 Canvas 上使用了一张图片,同一个屏幕会有几个与示例相同的 Canvas ,但我把它放在尽可能靠近项目的地方。

请问,点击“向左旋转”和“向右旋转”时,如何将图片向左或向右旋转90°?

我在互联网上尝试了几个代码,但没有一个有效。

最佳答案

您可以使用 Canvas 的 context.translate 和 context.rotate 来旋转您的图像

enter image description here

下面是一个函数,用于绘制按指定度数旋转的图像:

function drawRotated(degrees){
context.clearRect(0,0,canvas.width,canvas.height);

// save the unrotated context of the canvas so we can restore it later
// the alternative is to untranslate & unrotate after drawing
context.save();

// move to the center of the canvas
context.translate(canvas.width/2,canvas.height/2);

// rotate the canvas to the specified degrees
context.rotate(degrees*Math.PI/180);

// draw the image
// since the context is rotated, the image will be rotated also
context.drawImage(image,-image.width/2,-image.width/2);

// we’re done with the rotating so restore the unrotated context
context.restore();
}

这是代码和 fiddle :http://jsfiddle.net/m1erickson/6ZsCz/

<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" media="all" href="css/reset.css" /> <!-- reset css -->
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>

<style>
body{ background-color: ivory; }
canvas{border:1px solid red;}
</style>

<script>
$(function(){

var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");

var angleInDegrees=0;

var image=document.createElement("img");
image.onload=function(){
ctx.drawImage(image,canvas.width/2-image.width/2,canvas.height/2-image.width/2);
}
image.src="houseicon.png";

$("#clockwise").click(function(){
angleInDegrees+=30;
drawRotated(angleInDegrees);
});

$("#counterclockwise").click(function(){
angleInDegrees-=30;
drawRotated(angleInDegrees);
});

function drawRotated(degrees){
ctx.clearRect(0,0,canvas.width,canvas.height);
ctx.save();
ctx.translate(canvas.width/2,canvas.height/2);
ctx.rotate(degrees*Math.PI/180);
ctx.drawImage(image,-image.width/2,-image.width/2);
ctx.restore();
}


}); // end $(function(){});
</script>

</head>

<body>
<canvas id="canvas" width=300 height=300></canvas><br>
<button id="clockwise">Rotate right</button>
<button id="counterclockwise">Rotate left</button>
</body>
</html>

关于HTML5 Canvas 旋转图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17411991/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com