triangle strokestyle getcontext fillstyle fillrect figuras dibujar color javascript html5 canvas

javascript - strokestyle - fillstyle image



¿Utiliza programáticamente valores RGBa en fillStyle en<canvas>? (4)

Usando <canvas> , quiero establecer el valor RGBa del rectángulo usando una variable.

por ejemplo:

ctx.fillStyle = "rgba(32, 45, 21, 0.3)";

funciona bien, pero usándolo con una variable:

var r_a = 0.3; ctx.fillStyle = "rgba(32, 45, 21, r_a)";

no funciona

Aparentemente fillStyle solo acepta una cadena. Entonces, ¿cómo puedo establecer un valor del valor rgba usando alguna variable en lugar de definir explícitamente los valores?


Estaba buscando algo similar y me encontré con su publicación, después de leerla, se me ocurrió una solución, estoy trabajando con la API de audio y quería un color dinámico basado en una variable proveniente de la frecuencia en el archivo de sonido . Esto es lo que se me ocurrió y funciona por ahora, pensé en publicarlo en caso de que me sirviera, ya que obtuve la inspiración de su pregunta:

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


Llegué muy tarde a la fiesta pero tuve un problema similar y lo resolví de una manera ligeramente diferente que puede ser útil.

Como necesitaba reutilizar los colores de relleno en diferentes niveles alfa, utilicé el método de reemplazo de JavaScript:

colurfill = "rgba(255, 255, 0, [[opacity]])"; ctx.fillStyle = colurfill.replace("[[opacity]]", "0.5"); : : ctx.fillStyle = colurfill.replace("[[opacity]]", "0.75");

Obviamente no tiene que ser el nivel alfa que varía, podría ser uno de los otros canales.


Solo necesita concatenar la variable r_a para construir la cadena correctamente:

var r_a = 0.3; ctx.fillStyle = "rgba(32, 45, 21, " + r_a + ")";


ctx.fillStyle = "rgba(32, 45, 21, "+r_a+")";

Es concatenación de cadenas.