应用旋转时,HTML5 画布剪辑()在 Chrome 中不起作用
我正在尝试在画布上使用剪辑区域,一旦坐标系旋转任何非零值,它就会停止工作:
I'm trying to use a clip region on a canvas and it stops working as soon as the coordinate system is rotated by any non zero value:
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 中运行良好:
The code works fine in Firefox:
但在 Chrome 中,矩形内的图像是空的:
But in Chrome the image inside the rectangle is empty:
平移和缩放转换似乎可以正常工作,但旋转却不行.难道我做错了什么?如果这是 Chrome 中的错误,有没有好的解决方法?
Translate and scale transformations seem to work fine, but not the rotate. Am I doing something wrong? If it's a bug in Chrome, is there a good workaround?
我的系统是:Chrome版本 49.0.2623.87 m",Windows 7 Home Premium SP1,ASUS R7 250X 显卡.我每次都能重现这个问题.
My system is: Chrome "Version 49.0.2623.87 m", Windows 7 Home Premium SP1, ASUS R7 250X graphics card. I can reproduce the problem every time.
我发现如果我在浏览器设置中关闭硬件加速,问题就会消失.据我了解,这意味着我的显卡驱动程序可能存在问题.
I found that the problem goes away if I turn off hardware acceleration in the browser settings. As I understand this means there's probably a problem with my graphics card driver.
有没有办法让我的网页强制在 Chrome 中呈现软件?
Is there a way for my webpage to force the software rendering in Chrome?
推荐答案
问题似乎与浏览器硬件加速有关.关闭后一切正常.
The problem seems to be related to the browser hardware acceleration. Everything works fine as soon as I turn it off.
但是,我不知道我的网页是否可以禁用硬件加速.
However, I don't know if it's possible for my web page to disable hardware acceleration.
相关文章