以编程方式在<canvas>的fillStyle中使用RGBa值?
我正在用<canvas>
学习编程。 我想使用一个variables来设置矩形的RGBa值。
例如,
var r_a = 0.3;
ctx.fillStyle = "rgba(32, 45, 21, r_a)";
这不起作用。 但是ctx.fillStyle = "rgba(32, 45, 21, 0.3)";
确实有效
显然fillStyle
只接受一个string。 那么如何使用某个variables来设置rgba值的值,而不是显式地定义值呢?
你只需要连接r_a
variables来正确地build立string:
var r_a = 0.3; ctx.fillStyle = "rgba(32, 45, 21, " + r_a + ")";
ctx.fillStyle = "rgba(32, 45, 21, "+r_a+")";
它是string连接。
我很晚参加派对,但是我遇到了类似的问题,并以稍微不同的方式解决了这个问题。
由于我需要在不同的alpha级别重复使用填充颜色,因此我使用了JavaScriptreplace方法:
colurfill = "rgba(255, 255, 0, [[opacity]])"; ctx.fillStyle = colurfill.replace("[[opacity]]", "0.5"); : : ctx.fillStyle = colurfill.replace("[[opacity]]", "0.75");
显然,它不一定是变化的阿尔法水平,它可能是其他渠道之一。
我正在寻找类似的东西,并在阅读后碰到你的文章,我为自己想出了一个解决scheme,我正在使用audioAPI,并希望基于来自声音文件中频率的variables的dynamic颜色。 这是我想出来的,现在是炒作了,以为我会张贴它的情况下,因为我从你的问题得到灵感,
function frameLooper(){ window.requestAnimationFrame(frameLooper); fbc_array = new Uint8Array(analyser.frequencyBinCount); analyser.getByteFrequencyData(fbc_array); ctx.clearRect(0, 0, canvas.width, canvas.height); // Clear the canvas bars = 100; for (var i = 0; i < bars; i++) { bar_x = i * 3; bar_width = 2; bar_height = -(fbc_array[i] / 2); bar_color = i * 3; //fillRect( x, y, width, height ) // Explanation of the parameters below ctx.fillRect(bar_x, canvas.height, bar_width, bar_height); ctx.fillStyle = "rgb(100," + bar_color + "," + bar_color + ")" ; // Color of the bars