#data 格局

 {    kCursorResId:0,    kBitmapMaskWidth: 0,    kBitmapMaskHeight: 0,    kBitmapMaskData: [],    kBitmapMaskBitsPixel: 0,    kBitmapColorWidth: 0,    kBitmapColorHeight: 0,    kBitmapColorData: [],    kBitmapColorBitsPixel: 0,    x: 0,    y: 0,}

 let maskWidth = data.kBitmapMaskWidth || 0; let maskHeight = data.kBitmapMaskHeight || 0; let colorWidth = data.kBitmapColorWidth || 0; let colorHeight = data.kBitmapColorHeight || 0; let maskData = data.kBitmapMaskData || []; let colorData = data.kBitmapColorData; let maskBitsPixel = data.kBitmapMaskBitsPixel; let colorBitsPixel = data.kBitmapColorBitsPixel; const ctx = canvas.getContext("2d") let cols = colorWidth || maskWidth let rows = colorHeight || maskHeight ctx.canvas.width = cols; ctx.canvas.height = rows; ctx.fillStyle = 'rgba(255,255,255,0)'; ctx.clearRect(0, 0, cols, rows); if (!colorData || !colorData.length) {  //没有color data     if (!maskData || !maskData.length) {        cursorImgurl = null;     } else if (maskBitsPixel === 1) {         //黑白icon         let len = maskData.length;         let maskRealData = maskData.slice(0, len / 2);         let colorRealData = maskData.slice(len / 2);         rows = rows / 2;         ctx.canvas.height = rows;         for (let i = 0; i < rows; i++) {             for (let j = 0; j < cols; j++) {                 let index = Math.floor((i * cols + j) / 8);                 let pos = (i * cols + j) % 8;                 let maskBitCon = maskRealData[index] & (0b10000000 >> pos);                 let colorBit = (colorRealData[index] & (0b10000000 >> pos)) ? 255 : 0;                 let maskBit = maskBitCon ? colorBit / 255 : 1;                 ctx.fillStyle = 'rgba(' + colorBit + ',' + colorBit + ',' + colorBit + ',' + maskBit + ')';                 ctx.fillRect(j, i, 1, 1);             }        }        cursorImgurl = canvas.toDataURL('image/png');    } } else {     //黑白     for (let i = 0; i < rows; i++) {         for (let j = 0; j < cols; j++) {             let index = i * cols * 4 + j * 4;             let maskInd = Math.floor((i * cols + j) / 8);             let pos = (i * cols + j) % 8;             let r = colorData[index + 2];             let g = colorData[index + 1];             let b = colorData[index];             let mask = (maskData[maskInd] & (0b10000000 >> pos)) ? 0 : 1;             let ca = colorData[index + 3];             let a = ca !== 255 ? Math.floor(ca / 255) : mask ? 1 : 0;             ctx.fillStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';             ctx.fillRect(j, i, 1, 1);         }    }    cursorImgurl = canvas.toDataURL('image/png'); }