2

当我调用以下命令时,在 Chrome 浏览器 v. 24 上

brush(x,y,w,h)

控制台报告一个

DOM异常错误9

在这一行:

var imageData = cvs.createImageData(w,h);

此外,setPixel()应该按照说明更改 的r,g,b,a值,imageData.data但在我的浏览器上它看起来是透明的。创建一个透明的brush(...)w * h 正方形,这不是我想要的。

function setPixel(imageData, x, y, r, g, b, a) {
    index = (x + y * imageData.width) * 4;
    imageData.data[index+0] = r;
    imageData.data[index+1] = g;
    imageData.data[index+2] = b;
    imageData.data[index+3] = a;
}

function brush(x, y, w, h) {
        var canvas = document.getElementById('maincanvas');
        var cvs = canvas.getContext('2d');
        var imageData = cvs.createImageData(w,h);
        var r = 0;
        var g = 0;
        var b = 0;

        setPixel(imageData, x, y , r, g, b, 255);
        cvs.putImageData(imageData, x, y);
}

我的问题:除了异常之外,还有其他原因导致输出透明createImageData吗?

4

2 回答 2

1

尝试将 ( console.log()) 您的论点记录到createImageData. 这个函数似乎NOT_SUPPORTED_ERR: DOM Exception 9在第一个参数是NaNor时抛出Infinity(可能在其他情况下也是如此)。

于 2013-02-09T08:28:30.820 回答
0

来自下一页的报价

“当没有对画布应用样式规则时,它最初将是完全透明的。”

https://developer.mozilla.org/en-US/docs/HTML/Canvas/Tutorial/Basic_usage?redirectlocale=en-US&redirectslug=Canvas_tutorial%2FBasic_usage

于 2013-03-14T15:06:49.847 回答