gpt4 book ai didi

javascript - 应用旋转后,HTML5 canvas clip() 在 Chrome 中不起作用

转载 作者:行者123 更新时间:2023-11-28 01:15:11 25 4
gpt4 key购买 nike

我正在尝试在 Canvas 上使用剪辑区域,但一旦坐标系旋转任何非零值,它就会停止工作:

   window.onload = function() {
var canvas = document.getElementById("mainCanvas");
var ctx = canvas.getContext("2d");

ctx.rotate(Math.PI / 8); // !!! Clipping doesn't work with any non zero value

ctx.beginPath();
ctx.rect(0, 0, canvas.width, canvas.height);
ctx.stroke();
ctx.clip(); // !!! Image below is invisible in Chrome when clip() is enabled

var objectImage = document.getElementById("test");
ctx.drawImage(objectImage, 0, 0);
}
<canvas id="mainCanvas" width="320" height="240" style = "border:1px solid #d3d3d3;"></canvas>
<img id="test" width="0" height="0" src="https://dl.dropboxusercontent.com/u/4111969/test.png">

代码在 Firefox 中运行良好:

Canvas in Firefox

但在 Chrome 中,矩形内的图像是空的:

Canvas in Chrome

平移和缩放变换似乎工作正常,但旋转不是。难道我做错了什么?如果是 Chrome 中的错误,是否有好的解决方法?

编辑:

我的系统是:Chrome“版本 49.0.2623.87 m”、Windows 7 Home Premium SP1、ASUS R7 250X 显卡。我每次都能重现问题。

我发现如果我在浏览器设置中关闭硬件加速,问题就会消失。据我了解,这意味着我的显卡驱动程序可能有问题。

有没有办法让我的网页强制在 Chrome 中呈现软件?

最佳答案

在 Chrome 中,drawImage() 在图像加载之前完成,你必须这样检查:

<!DOCTYPE HTML>
<html>
<script>
window.onload = function() {
var canvas = document.getElementById("mainCanvas");
var ctx = canvas.getContext("2d");
ctx.rotate(Math.PI / 8); // !!! Clipping doesn't work with any non zero value
ctx.beginPath();
ctx.rect(0, 0, canvas.width, canvas.height);
ctx.stroke();
ctx.clip();

//Make sure the Image is loaded
var objectImage= new Image();
objectImage.src="https://dl.dropboxusercontent.com/u/4111969/test.png"
objectImage.onload =function()
{
ctx.drawImage(objectImage, 0, 0);
}
}
</script>
<body>
<img id="test" width="0" height="0" src="https://dl.dropboxusercontent.com/u/4111969/test.png">
<canvas id="mainCanvas" width="320" height="240" style = "border:1px solid #d3d3d3; margin:0; padding:0"></canvas>
</body>
</html>

关于javascript - 应用旋转后,HTML5 canvas clip() 在 Chrome 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36026145/

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