为什么更改画布大小会重置其参数?

Rod*_*igo 3 javascript firefox mozilla canvas

当我更改画布大小时,我注意到参数“mozImageSmoothingEnabled”正在被重置。

HTML

<canvas id='canv'>Your browser don't support canvas.</canvas>
Run Code Online (Sandbox Code Playgroud)

Javascript

var cnv = document.getElementById('canv');
var ctx = cnv.getContext('2d');
console.log(ctx.mozImageSmoothingEnabled); // default 'true'
ctx.mozImageSmoothingEnabled = false;
console.log(ctx.mozImageSmoothingEnabled); // shows 'false'
cnv.width = 100;
console.log(ctx.mozImageSmoothingEnabled); // shows 'true'
Run Code Online (Sandbox Code Playgroud)

JSFiddle:https ://jsfiddle.net/epvtuz37/

这是一个错误,还是预期的行为?

Kai*_*ido 7

因为当您更改画布widthheight参数时,附加上下文的每个属性都将重置为其默认值。

从规格

创建画布元素时,随后每当设置宽度和高度属性(无论是新值还是前值),位图和任何关联的上下文都必须清除回其初始状态并使用新指定的值重新初始化坐标空间维度。

  • 是的,这是预期的,理由是上下文基于像素矩阵,如果您更改此像素矩阵,则其他所有内容都必须重置。 (2认同)