【发布时间】:2021-01-10 13:18:02
【问题描述】:
似乎谷歌浏览器的更新搞砸了我的画布渲染。 我有一个非常简单的代码,可以在画布上呈现图像和文本:
var onDraw = function() {
context.clearRect(0, 0, 256, 256);
context.drawImage(image, 0, 0, 256, 256);
context.fillText('TEST', 0, 20);
requestAnimationFrame(onDraw);
};
此代码在 Chrome 上非常闪烁:https://jsfiddle.net/gp9jxn6q/(只需将鼠标移到页面上)。
我发现只有两种方法可以防止这种行为:
- 请致电
context.clearRect()获取整个画布。但在这种情况下,我不能只重绘脏矩形。 - 为画布设置
image-rendering: pixelated。在这种情况下,所有字体看起来都很糟糕。
这还能做什么?
【问题讨论】:
-
在我的 chrome (Macos) 上不闪烁
-
对我来说也不闪烁(Chrome 85、MacOS)。基于提供的代码的问题:你为什么使用
requestAnimationFrame?绘制图像和文本一次并保持原样。 -
@David 它在我电脑上的 Chrome/Windows 中闪烁。
-
这个问题似乎只存在于windows和android上。 @David 这只是说明问题的一个例子。
-
PS:您的 jsfiddle 仅在 http 上通过 https 协议对我不起作用。图像无法加载。
标签: javascript html google-chrome canvas flicker