*SVG (Scalable Vector Graphics) (벡터 그래픽 기반, 파일에 의존)
메모리 내에서 유지 > 다시 렌더링할 때 코드결과를 통해 조작할 수 있는 유지 모드 그래픽 모델
- HTML과 마찬가지로 요소, 특성 및 스타일을 사용하여 문서에 빌드된다. (Javascript 와 css의 조합을 사용하여 조작이 가능하다.)
- svg가 삽입되면 div처럼 동작하고 HTMLDocument에 속하지만, 추가적인 인터페이스인 SVGDocument를 포함한다. (SVGDocument는 벨터그래픽과의 더 긴밀하고 더 풍부한 상호 작용을 제공한다.)
- 정적, 동적, 상호작용형 애니메이션이 될 수 있다.
- 독립적인 웹 애플리케이션 사용자 인터페이스를 제공
- 고도의 상호작호작용 애니메이션 사용자 인터페이스
- 데이터차트 및 그래프
- 벡터 이미지 편집
*Canvas (픽셀 조작 형식, 순수 스크립트 사용)
SVG와 같이 직사각형, 경로 및 이미지를 비롯한 즉시 모드 그래픽을 그리기 위한 더 많은 프로그래밍 환경 노출
- 즉시 모드 그래픽 렌더링은 그래픽을 화면에 직접 렌더링한 다음 그 후에는 구행된 작업에 대한 컨텍스트가 없는 '실행 후 자동' 모델
- 유지 모드와 달리 렌더링된 그래픽이 저장되지 않음
- SVG와 달리 스타일 지정도 없고 여러 형상에 대한 적중 감지에 대한 지원도 없음
- Canvas는 확장성을 지원하지 않으므로 확대/축소 시 급격하게 충실도가 떨어짐
- 상호작용하는 이미지 편집
- 데이터 시각화, 데이터 플롯, 렌더링 도형, 함수의 그래프: 격자 그래프 생성
- 이미지 분석: 히스토그램의 색상 사용
- 스프라이트와 배경등으로 게임 그래픽 렌더링
- canvas 의 최대 장점은 속도 (그린 이미지의 특정 부분을 인식하지 않아 브라우저 내부에선 그리기만함)
- 애니메이션에 더 효율적 (단순 movement는 svg가 낫지만 화면 전체를 다시 그리는 애니메이션에는 svg는 비효율적)
Canvas | SVG |
---|---|
픽셀 기반(Dynamic .png) | 백터 그래픽 기반 |
단일 HTML요소 | DOM의 부분이 되는 다중 그래픽 요소 |
스크립트를 통해서만 수정이가능 | 스크립트 및 CSS를 통해 수정가능 |
이벤트 모델/사용자 조작이 세분화됨(x, y) | 이벤트 모델/사용자 조작이 추상화됨(직사각형, 경로) |
성능은 표면이 작거나, 개체수가 많을 경우 또는, 두 가지 조건이 모두 충족. | 성능은 개체 수가 적거나, 표면이 클 경우 또는 두 가지 조건이 모두 충족. |