2016-11-22 88 views
1

當我更改畫布大小時,我注意到參數'mozImageSmoothingEnabled'正在重置。爲什麼更改畫布大小會重置mozImageSmoothingEnabled參數?

HTML

<canvas id='canv'>Your browser don't support canvas.</canvas> 

的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' 

的jsfiddle:https://jsfiddle.net/epvtuz37/

這是一個錯誤,或者預期的行爲?

回答

2

因爲當您更改畫布widthheight參數時,附加上下文的屬性被重置爲其默認值。

From specs

當畫布元件被創建,並隨後每當寬度和高度屬性設置(是否爲一個新值,或先前的值)時,位圖和任何相關聯的上下文必須被清零回到它們的初始狀態並用新指定的座標空間尺寸重新初始化。

+0

謝謝。但是這是預期的嗎?它背後的基本原理是什麼? – Rodrigo

+1

是的,它的預期,其基本原理是上下文基於像素矩陣,如果您更改此像素矩陣,則其他所有內容都必須重置。 – Kaiido

+0

沒錯。謝謝! – Rodrigo

相關問題