キャンバス全体を特定の色で塗りつぶす方法


92

HTML5全体を埋める方法 <canvas>を1つの色で。

私はこのようないくつかの解決策を見ましたCSSを使用して背景色を変更するが、キャンバスが透明なままであるため、これは適切な解決策ではありません。変更されるのは、占有するスペースの色だけです。

もう1つは、キャンバス内の色で何かを作成することです。たとえば、長方形(ここを参照)ですが、それでもキャンバス全体が色で塗りつぶされません(キャンバスが作成した形状よりも大きい場合)。

キャンバス全体を特定の色で塗りつぶす解決策はありますか?

回答:


150

はい、キャンバス全体に無地の長方形を塗りつぶし、キャンバス自体のheightwidthを使用します。

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


17

背景を明示的に作成する場合は、キャンバス上の現在の要素の背後に描画することを確認する必要があります。

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);

4
人々が単に画像として色のブロックを望んでいないかもしれないことを理解してくれてありがとう!
FamousAv8er

6

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);
* { margin: 0; padding: 0; box-sizing: border-box; }
body { overflow: hidden; }
<canvas id='canvas'></canvas>


6

これを行うことで、キャンバスの背景を変更できます。

<head>
    <style>
        canvas {
            background-color: blue;
        }
    </style>
</head>

1
@Enveは、CSSを使用しないようにしたいと述べました。

0

キャンバスグラフィックス用のライブラリ全体があります。これはp5.jsと呼ばれます。head要素に1行だけ追加し、sketch.jsファイルを追加するだけで追加できます。

最初にhtmlタグとbodyタグに対してこれを行います。

<html style="margin:0 ; padding:0">
<body style="margin:0 ; padding:0">

これを頭に追加します。

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.6.1/p5.js"></script>
<script type="text/javascript" src="sketch.js"></script>

Sketch.jsファイル

function setup() {
    createCanvas(windowWidth, windowHeight);
    background(r, g, b);
}

注意p5.jsされ340kBminiziedgzipで圧縮されました!このページにはもう少し軽量なオプションが含まれていると思います。
kano19年

@kano私は初心者のときにこの答えを書きました。それから久しぶりです。
kingmanas
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.