Skip to content

커스텀 커버 예제 (Custom Cover Example)

Scratcher.js는 기본적으로 단색 또는 이미지 커버를 지원하지만, renderCover 옵션을 활용하면 캔버스에 원하는 방식으로 커버를 자유롭게 그릴 수 있습니다.

예를 들어, 그라데이션, 패턴, 동적 효과 등 다양한 커버를 직접 구현할 수 있습니다. 아래 예시들은 각 환경(Vanilla JS, React, Vue)에서 커스텀 커버를 적용하는 방법을 보여줍니다.

Playground

아래 Playground는 직접 실습해볼 수 있는 예시입니다.

renderCover 함수 예시

renderCover 를 통해 커스텀 커버를 사용하게 되면, 단색 커버를 제공하는 cover 는 사용하지 않게됩니다. 다만 renderCover 의 매개변수로 cover 값을 제공하기 때문에, 사용이 필요할 경우 활용하세요.

ts
function renderCover(canvas: HTMLCanvasElement, cover: string, width: number, height: number) {
  const ctx = canvas.getContext('2d');
  if (!ctx) return;
  // custom Gradient cover
  const grad = ctx.createLinearGradient(0, 0, width, height);
  grad.addColorStop(0, '#7700ff');
  grad.addColorStop(1, '#bf4587');
  ctx.fillStyle = grad;
  ctx.fillRect(0, 0, width, height);
}

아래는 환경별(바닐라 JS, React, Vue) 커스텀 커버 적용 예시입니다.

ts
import { Scratcher } from '@scratcher.js/core';

const canvas = document.getElementById('my-canvas') as HTMLCanvasElement;
const scratcher = new Scratcher({
  width: 400,
  height: 240,
  brushSize: 30,
  renderCover,
});
scratcher.bindCanvas(canvas);