我有各种十六进制 RRGGBBAA 颜色作为热图渐变中的停止值,但我注意到为某些停止设置不同的 Alpha 值不会改变我的代码中的不透明度,我总是得到相同的视图 - 尽管设置了最后两个由于某种原因,00 的 alpha 位作为 0.0 不透明度起作用-。RRGGBBAA 值是这样写的:
0xaa00007f
(最后两位,7f应该是0.5不透明度)
0xaa0000ff
(ff 是 1.0 的不透明度)
采用停止值的 setGradientStops 函数是这样的 - 这是来自热图库,而不是我的代码 -
setGradientStops: function(stops) {
var ctx = document.createElement('canvas').getContext('2d');
var grd = ctx.createLinearGradient(0, 0, 256, 0);
for (var i in stops) {
grd.addColorStop(i, 'rgba(' +
((stops[i] >> 24) & 0xFF) + ',' +
((stops[i] >> 16) & 0xFF) + ',' +
((stops[i] >> 8) & 0x7F) + ',' +
((stops[i] >> 0) & 0x7F) + ')');
}
ctx.fillStyle = grd;
ctx.fillRect(0, 0, 256, 1);
this.gradient = ctx.getImageData(0, 0, 256, 1).data;
}