[HTML] Canvas와 SVG의 차이점

 

1. HTML 캔버스(Canvas) 예제

HTML의 캔버스 <canvas> 요소를 사용해 비트맵 이미지를 그릴 수 있는 2D 그래픽 API 입니다. 주로 Javascript를 통해서 동적으로 그래픽을 렌터링합니다.

 

  • 사용 방법:
    • HTML에 <canvas> 요소 추가: HTML 문서에 <canvas> 태그를 추가해. width와 height 속성으로 크기를 지정하고, style 속성으로 테두리를 설정할 수 있습니다.
    • Javascript로 그래픽 그리기: JavaScript를 사용해 캔버스의 2D 컨택스트를 가져와, 다양한 메소드를 사용해 그래픽을 그립니다.
  • 기능 및 옵션:
    • 2D 컨텍스트: getContext('2d') 메소드로 2D 렌더링 컨텍스트를 얻음
    • 선 그리기: beginPath(), moveTo(x,  y), lineTo(x,  y), stroke() 메소드를 사용해 선을 그림
    • 원 그리기: arc(x, y, radius, startAngle, endAngle) 메소드를 사용해 원을 그림.
    • 텍스트 그리기: fillText(text, x, y) 메소드를 사용해 텍스트를 그림 
  • 스타일링 옵션:
    • 색상 및 스타일: fillStyle, storkeStyle 속성을 사용하여 색상 및 선의 스타일을 설정
    • 글꼴 설정: font 속성을 사용해 텍스트의 글꼴 스타일을 설정 
  • 이미지 처리: drawImage(image, x, y) 메소드를 사용해 이미지를 캔버스에 그림
  • 애니메이션: requestAnimationFrame()을 사용하여 부드러운 애니메이션을 구현
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Canvas example</title>
</head>
<body>
    <canvas id="myCanvas" width="400" height="400" style="border:1px solid #000"></canvas>
    <script>
        const canvas = document.getElementById('myCanvas');
        const ctx = canvas.getContext('2d');


        // 사각형 그리기
        ctx.fillStyle = 'blue';
        ctx.fillRect(50,50,200, 100);
       
         // 텍스트 
        ctx.fillStyle = 'white';
        ctx.font = "20px Arial";
        ctx.fillText('Hello Canvas!', 70, 100);
    </script>
</body>

</html>

2. SVG (Scalable Vector Graphics)

SVG는 XML 기반의 백터 그래픽 형식으로, 그래픽을 수학적으로 표현합니다. 각 요소는 DOM의 객체로 다룰 수 있어, 쉽게 수정이 가능하고 애니메이션을 적용할 수 있습니다.

 

  • 사용 방법:
    • HTML에 <svg> 요소 추가: HTML 문서에 <svg> 태그를 추가하고, width와 height 속성으로 크기를 설정함
    • 도형 및 텍스트 추가: <rect>, <circle>, <text> 등 SVG 요소를 사용해 그래픽을 정의함, 각 요소의 속성을 추가해 스타일을 지정할 수 있음
  • 도형 요소
    • 사각형: <rect> 태그를 사용하여 사각형을 그림. x,y,width,height, fill 속성으로 스타일을 설정
    • 원: <circle> 태그를 사용하여 원을 그림, cx,cy,r,fill 속성으로 스타일을 설정
    • 타원: <ellipse> 태그를 사용하여 타원을 그림, cx,cy,rx,ry,fill 속성으로 스타일 설정 
    • : <line> 태그를 사용하여 선을 그립니다. x1,y1,x2,y2,stroke 속성으로 스타일을 설정
    • 다각형: <polygon> 태그를 사용해 다각형을 그림, points 속성으로 꼭지점을 정의
  • 텍스트: <text> 태그를 사용해 텍스트를 추가할 수 있음. x,y,font-family, font-size, fill 속성으로 스타일을 설정
  • 스타일링
    • CSS 사용: SVG 요소는 CSS를 사용하여 스타일을 적용할 수 있음
    • 애니메이션: <animate> 태그를 사용하여 애니메이션 효과를 추가할 수 있음
  • 상호작용: JavaScript를 통해 SVG 요소에 이벤트 리스너를 추가하여 사용자와의 상호작용을 구현할 수 있음
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>svg</title>
</head>
<body>
    <svg width="400" height="400" style="border: 1px solid #000000">
        <!-- 사각형 -->
         <rect x="50" y="50" width="200" height="100" fill="blue"></rect>
         <!-- 원 -->
          <circle cx="150" cy="200" r="50" fill="red" />
           <!--텍스트  -->
           <text x="70" y="100" font-family="Arial" font-size="20" fill="white">SVG PR</text>
    </svg> 
</body>
</html>

요약

  • HTML 캔버스:
    • 픽셀 기반으로 동적인 그래픽을 그리기 위한 API.
    • 다양한 그래픽 요소를 그릴 수 있는 메소드 제공
    • 애니메이션 및 이미지 처리에 강력함.
  • SVG:
    • 백터 기반으로 정적인 그래픽 및 인터랙티브 요소를 구현
    • 다양한 도형과 텍스트 요소를 쉽게 추가하고 스타일링 가능.
    • CSS와 JavaScript를 통해 상호작용 및 애니메이션을 쉽게 적용할 수 있음.

 

LIST