전체 캔버스를 특정 색상으로 채우는 방법


92

전체 HTML5 <canvas>를 하나의 색상 으로 채우는 방법 .

나는 다음과 같은 몇 가지 솔루션을 보았다 , 변경이 차지하는 공간의 색상있는 유일한 일을 CSS를 사용하여 배경 색상을 변경할 수 있지만, 캔버스 투명 남아 있기 때문에 이것은 좋은 솔루션이 아닙니다.

다른 하나는 캔버스 내부에 색상으로 무언가를 만드는 것입니다. 예를 들어 직사각형 ( 여기 참조 )이지만 여전히 전체 캔버스를 색상으로 채우지 않습니다 (캔버스가 우리가 만든 모양보다 큰 경우).

캔버스 전체를 특정 색상으로 채우는 솔루션이 있습니까?

답변:


150

예, 바로 사용, 캔버스에 걸쳐 단색으로 직사각형을 작성 height하고 width캔버스 자체의 :

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 요소와 추가 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되는 340kBminizied gzip으로 압축! 나는이 페이지가 일부 약간 더 가벼운 옵션이 포함되어 있습니다 말하고 싶지만 ..
카노

@kano 내가 멍청했을 때이 대답을 썼습니다. 그 이후로 오래되었습니다.
kingmanas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.