如何用特定的颜色填充整个画布

Env*_*nve 68 javascript html5 canvas

如何<canvas>用一种颜色填充整个HTML5 .

我看到了一些像这样的解决方案来改变背景颜色使用CSS,但这不是一个好的解决方案,因为画布保持透明,唯一改变的是它占据的空间的颜色.

另一个是通过在画布内创建具有颜色的东西,例如矩形(参见此处),但它仍然没有用颜色填充整个画布(如果画布大于我们创建的形状).

是否有解决方案用特定颜色填充整个画布?

Spe*_*rek 113

是的,只需填写与在画布纯色的矩形,使用heightwidth画布本身:

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
ctx.fillStyle = "blue";
ctx.fillRect(0, 0, canvas.width, canvas.height);
Run Code Online (Sandbox Code Playgroud)
canvas{ border: 1px solid black; }
Run Code Online (Sandbox Code Playgroud)
<canvas width=300 height=150 id="canvas">
Run Code Online (Sandbox Code Playgroud)

  • ``ctx.fillStyle="rgb(0,0,255)"`` [fillStyle](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/fillStyle) (3认同)

nik*_*ong 30

如果你想明确地做背景,你必须确定你在画布上的当前元素后面绘制。

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
// Add behind elements.
ctx.globalCompositeOperation = 'destination-over'
// Now draw!
ctx.fillStyle = "blue";
ctx.fillRect(0, 0, canvas.width, canvas.height);
Run Code Online (Sandbox Code Playgroud)

  • 感谢您意识到人们可能不仅仅想要一块颜色作为图像! (5认同)

小智 13

您可以通过执行以下操作来更改画布的背景:

<head>
    <style>
        canvas {
            background-color: blue;
        }
    </style>
</head>
Run Code Online (Sandbox Code Playgroud)

  • 对 OP 没用。但对于在标题中搜索问题的人来说也许有用。 (9认同)
  • @Enve 说他或她希望它不使用 CSS。 (2认同)

小智 5

let canvas = document.getElementById('canvas');
canvas.setAttribute('width', window.innerWidth);
canvas.setAttribute('height', window.innerHeight);
let ctx = canvas.getContext('2d');

//Draw Canvas Fill mode
ctx.fillStyle = 'blue';
ctx.fillRect(0,0,canvas.width, canvas.height);
Run Code Online (Sandbox Code Playgroud)
* { margin: 0; padding: 0; box-sizing: border-box; }
body { overflow: hidden; }
Run Code Online (Sandbox Code Playgroud)
<canvas id='canvas'></canvas>
Run Code Online (Sandbox Code Playgroud)


A. *_*est 5

我们不需要访问画布上下文。

在纯 JS 中实现hednek你会得到canvas.setAttribute('style', 'background-color:#00F8'). 但我的首选方法需要将kabab-case转换为CamelCase

canvas.style.backgroundColor = '#00F8'