0
我想設置畫布上所有像素的顏色。我很確定我知道它是如何工作的:canvas.getContext("2d").getImageData.data
中的前4個值是指第一個像素的r,g,b和a,第二個4代表第二個像素,依此類推。我想知道什麼是錯,此代碼:如何填充畫布像素?
function draw()
{
var cnvs = document.getElementById("CanvasFlynn"); //Assume it's 2x2 pixels
var cont = cnvs.getContext("2d");
var imdt = cont.getImageData(0,0,2,2);
var r = [ 255 , 0 , 0 , 255 ];
var g = [ 0 , 255 , 0 , 255 ];
var b = [ 0 , 0 , 255 , 255 ];
var a = [ 1 , 1 , 1 , 1 ];
var index = 0;
for (var i = 0 ; i < imdt.data.length ; i++)
{
index = 4*i;
imdt.data[index] = r[i];
imdt.data[index+1] = g[i];
imdt.data[index+2] = b[i];
imdt.data[index+3] = a[i];
}
}
如果有人能告訴我,爲什麼這不會改變畫布像素顏色,那就會動搖(我不實際使用一個2x2的卡瓦酒,那只是作爲一個例子)。
我沒有調用'cont.getImageData'與參數的函數,只是忘了包括在SO問題框中修復它。您的其他建議雖然解決了問題。謝謝 –
您修正了OP的代碼,但如果您不打算使用已經繪製的數據,那麼使用'ctx.createImageData()'將會更便宜。 – Kaiido