본문 바로가기
개발(Development)/HTML Canvas(캔버스)

HTML Canvas(캔버스) 패턴 이미지 채우기 적용 방법: createPattern

by 카레유 2021. 6. 4.

# 이미지를 반복 패턴으로 채우기 방법

1. 이미지 객채 생성

 const img = new Image(); 

 

2. 이미지 소스 설정

 img.src = '이미지 경로'; 

 

3. 패턴 객체 생성 

 const pattern = ctx.createPattern(img, 'repeat'); 

* repeat: 이미지 패턴 반복

* repeat-x: x축 반복

* repeat-y: y축 반복

* no-repeat: 반복 안함

 

4. 패턴 적용

 ctx.fillStyle = pattern; 

* fillStyle 적용 후, ctx.fillRect(x좌표, y좌표, 길이, 높이); 처럼 색을 채우면 패턴이 적용된다.

 

참고) 상황에 따라, 이미지 로드가 완료된 후 적용하는 것이 안전하다.

img.onload = function(){
    const pattern = ctx.createPattern(img, 'repeat');
    ctx.fillStyle = pattern;
    ctx.fillRect(x좌표, y좌표, 길이, 높이);
}

 

# 샘플 예제 코드

반복되는 이미지로 패턴을 만들어 사각형을 그리는 예제

<!DOCTYPE html>
<html lang="en">
<head>

</head>

 <body>

     <!-- HTML -->
     <!-- 1. canvas 엘리먼트를 선언한다: id, widht, height를 태그 내에서 지정해준다. -->
    <canvas id="myCanvas" width="400" height="300"></canvas>
    

    <!-- Javascript -->
    <script>
    
        // 1. canvas 엘리먼트를 취득한다.
        const canvas = document.getElementById('myCanvas');

        // 2. 2d모드의 그리기 객체를 취득한다. => 이 객체를 통해 canvas에 그림을 그릴 수 있다.
        const ctx = canvas.getContext("2d");

        // 3. 이미지 객체 생성
        const img = new Image();

        // 4. 이미지 소스 설정
        img.src = '../img/img_patrn.png';

        // 5. 이미지 로드이벤트- 콜백함수 등록
        img.onload = function(){
            // 1) 패턴 생성
            const pattern = ctx.createPattern(img, 'repeat');

            // 2) 채우기 색을 패턴으로 설정
            ctx.fillStyle = pattern;

            // 3) 사각형 그리기
            ctx.fillRect(0, 0, canvas.width, canvas.height); // 캔버스의 너비, 높이를 꽉채우는 사각형
        }   
        
    </script>
    
</body>
</html>

<결과물>

 

캔버스 기초는 아래 글 참고

HTML Canvas(캔버스) 기초: 기본 사용 방법 & 샘플 예제 코드

 

  

댓글