HTML5 Canvas API 프로그래밍 _html5 튜토리얼 기술
캔버스 가입
//캔버스 요소 가져오기 및 그리기 컨텍스트 var canvas = document.getElementById("diagonal");
var context = canvas.getContext("2d");
//절대 좌표를 사용하여 경로 만들기
context.beginPath( );
context.moveTo(70, 140);
context.lineTo(140, 70);
//캔버스에 이 선을 그립니다
context.Stroke()
변형
변환(확대/축소, 이동, 회전) 등을 통해 위와 동일한 효과를 얻을 수 있습니다.
변형을 이용하여 대각선 그리기
//캔버스 요소 가져오기 및 그리기 컨텍스트
var canvas = document.getElementById("diagonal");
var context = canvas.getContext("2d");
//현재 그리기 상태 저장
context.save ();
//그리기 컨텍스트를 오른쪽 아래로 이동
context.translate(70, 140);
//원점을 시작점으로 하여 이전과 같은 선분을 그린다
context.beginPath();
context .moveTo(0, 0);
context.lineTo(70, -70);
context.Stroke();
context.restore()
경로
HTML5 Canvas API의 경로는 렌더링하려는 모든 모양을 나타냅니다.
beginPath(): 그리기 시작하는 그래픽의 종류에 관계없이 가장 먼저 호출해야 하는 것은 BeginPath입니다. 이 간단한 함수는 매개 변수를 사용하지 않으며 캔버스에 새 그래픽 그리기를 시작할 것임을 알리는 데 사용됩니다.
moveTo(x,y): 그리지 않고 현재 위치를 새로운 대상 좌표(x,y)로 이동합니다.
lineTo(x,y): 현재 위치를 새로운 대상 좌표(x,y)로 이동할 뿐만 아니라 두 좌표 사이에 직선을 그립니다.
closePath(): 이 함수는 lineTo와 매우 유사하게 동작합니다. 유일한 차이점은 closePath가 자동으로 경로의 시작 좌표를 대상 좌표로 사용한다는 것입니다. 또한 현재 그려진 모양이 닫혀 있거나 완전히 닫힌 영역을 형성하고 있음을 캔버스에 알리므로 향후 채우기 및 획에 매우 유용합니다.
소나무 캐노피 그리기
function createCanopyPath(context) {
// 나무 캐노피 그리기
context.beginPath();
context.moveTo(-25, -50);
context.lineTo(-10, -80);
context.lineTo(-20, -80);
context.lineTo( -5, -110);
context.lineTo(-15, -110);
//트리의 정점
context.lineTo(0, -140);
context.lineTo(15, -110);
context.lineTo(5, -110);
context.lineTo(20, -80);
context.lineTo(10, - 80);
context.lineTo(25, -50);
// 시작점 연결, 닫힌 경로
context.closePath();
}
function drawTrails() {
var canvas = document.getElementById('diagonal');
var context = canvas.getContext('2d');
context.save();
context.translate(130, 250);
//캐노피를 나타내는 경로 생성
createCanopyPath(context);
// 현재 경로 그리기
context.Stroke();
context.restore();
}
window.addEventListener("load", drawTrails, true)
획 스타일
스트로크 모드를 사용하여 나무 왕관을 더욱 사실적으로 보이게 만드세요.
//줄 넓히기
context .lineWidth = 4;
//매끄러운 경로의 연결점
context.lineJoin = 'round';
//Color
context.StrokeStyle = '#663300';
//현재 경로 그리기
context.Stroke()
채우기 스타일
사각형 그리기
나무에 줄기를 추가합니다
곡선 그리기
context.save();
context.translate(-10, 350);
context.beginPath();
// 첫 번째 곡선은 오른쪽 위쪽으로 곡선을 이룹니다
context.moveTo(0, 0);
context.quadraticCurveTo(170, -50, 260, -190);
//오른쪽 아래로 곡선
context.quadraticCurveTo(310, -250, 410, -250);
// 넓은 갈색 획으로 경로를 그립니다.
context.StrokeStyle = '#663300';
context.lineWidth = 20;
context.Stroke();
// 이전 캔버스 상태 복원
context.restore()
캔버스에 그림 삽입
이미지 작업을 하려면 이미지가 완전히 로드될 때까지 기다려야 합니다. 브라우저는 일반적으로 페이지 스크립트가 실행될 때 이미지를 비동기적으로 로드합니다. 이미지가 완전히 로드되기 전에 캔버스에 렌더링하려고 하면 캔버스에 이미지가 표시되지 않습니다. 따라서 이미지가 로드되었는지 확인하는 데 특별한 주의가 필요합니다. .
// 이미지 로드
var bark = new Image();
bark.src = "bark.jpg";
// 이미지가 로드된 후 그리기 함수
bark.onload = function () {
drawTrails();
}
사진 보기:
그라데이션
그라디언트를 사용하려면 세 단계가 필요합니다.
(1) 그라데이션 개체 만들기
(2) 그라디언트 개체의 색상을 설정하고 전환 방법을 지정합니다
(3) 상황에 따라 채우기 스타일 또는 획 스타일에 대한 그라데이션 설정
// 3개를 생성합니다 -차원 나무 줄기 텍스처 수평 그라데이션 순서
var trunkGradient = context.createLinearGradient(-5, -50, 5, -50);
//몸통의 왼쪽 가장자리는 일반적으로 갈색입니다
trunkGradient.addColorStop(0, '#663300');
// 트렁크 왼쪽 가운데 부분의 색상에 대해 논의가 필요합니다
trunkGradient.addColorStop(0.4, '#996600');
//오른쪽 가장자리의 색상이 더 어두워야 합니다
trunkGradient.addColorStop(1, '#552200');
// 트렁크를 그라데이션으로 채우기
context.fillStyle = trunkGradient;
context.fillRect(-5, -50, 10, 50);
// 세로 그라데이션을 만들어 나무 줄기에 캐노피 그림자가 있는 트렁크
var canopyShadow = context.createLinearGradient(0, -50, 0, 0);
// 투영 그라데이션의 시작점은 투명도가 50%인 검은색입니다.
canopyShadow.addColorStop(0, ' rgba(0, 0, 0, 0.5)');
// 방향은 수직 아래쪽입니다. 짧은 거리 내에서는 그라데이션이 완전히 투명하게 빠르게 변경됩니다.
// 이 길이를 초과하는 투영
canopyShadow.addColorStop(0.2, 'rgba(0, 0, 0, 0.0)');
// 투영 그라데이션으로 나무 줄기를 채웁니다.
context.fillStyle = canopyShadow;
context.fillRect(-5, -50, 10, 50);
배경 이미지
// 이미지 로드
var gravel = new Image();
gravel.src = "gravel.jpg";
gravel.onload = function () {
drawTrails();
}
//두꺼운 갈색 선을 배경 이미지로 교체
context.StrokeStyle = context.createPattern(gravel, 'repeat');
context.lineWidth = 20;
context.Stroke() ;
context.createPattern의 두 번째 매개변수는 반복성 표시이며 표 2-1에서 적절한 값을 선택할 수 있습니다.
平铺方式 | 意义 |
repeat | (默认值)图片会在两个方向平铺 |
repeat-x | 横向平铺 |
repeat-y | 纵向平铺 |
no-repeat | 图片只显示一次,不平铺 |
확대
스케일링 함수 context.scale(x,y): x와 y는 각각 x와 y 차원의 값을 나타냅니다. 각 매개변수는 캔버스에 이미지를 표시할 때 방향축을 기준으로 이미지를 확대(또는 축소)해야 하는 양을 전달합니다. x 값이 2이면 그려진 이미지의 모든 요소 너비가 2배가 된다는 뜻이고, y 값이 0.5이면 그려진 이미지의 높이는 이전보다 절반이 됩니다.
// X=130 , Y= 250에 첫 번째 트리 그리기
context.save();
context.translate(130, 250);
drawTree(context);
context.restore(); p>
// X=260, Y=500에 두 번째 트리를 그립니다.
context.save();
context.translate(260, 500);
//두 번째 트리의 높이와 너비를 원래 값의 2배로 늘립니다.
context.scale(2, 2);
drawTree(context);
context.restore();
회전
이미지 회전
context.save();
//회전 각도 매개변수는 라디안 단위입니다
context.rotate(1.57);
context.drawImage(myImage, 0, 0, 100, 100);
context.restore();
변환 활용법
// 현재 상태를 저장합니다
컨텍스트 .save();
// Y 값이 증가함에 따라 X 값도 증가합니다.
// 그림자로 사용되는 기울어진 나무를 만들 수 있습니다.
// 변환을 적용한 후 모두 좌표는 행렬
context.transform(1, 0,
-0.5, 1,
, 0);
// Y축 방향으로 그림자 높이를 원래 값의 60%로 변경합니다
context.scale(1, 0.6);
// 투명도 20%의 검은색으로 트렁크를 채웁니다
context.fillStyle = 'rgba(0, 0, 0, 0.2)';
context.fillRect(-5, -50, 10, 50);
//기존 그림자 효과를 사용하여 트리를 다시 그립니다.
createCanopyPath(context);
context.fill();
//이전 캔버스 상태 복원
context.restore();
텍스트
context.fillText(text,x,y,maxwidth): 텍스트 텍스트 콘텐츠, x,y는 텍스트 위치를 지정하고, maxwidth는 텍스트 위치를 제한하는 선택적 매개변수입니다.
context.스트로크텍스트(text,x,y,maxwidth): 텍스트 텍스트 콘텐츠, x,y는 텍스트 위치를 지정하고, maxwidth는 텍스트 위치를 제한하는 선택적 매개변수입니다.
// 캔버스에 텍스트 그리기
context.save();
//글꼴 크기는 60이고 글꼴은 Impact
context.font = "60px Impact";
//채우기 색상
context.fillStyle = '#996600';
//Center
context.textAlign = 'center';
//텍스트 그리기
context.fillText('Happy Trails!', 200, 60, 400);
context.restore();
그림자
여러 전역 컨텍스트 속성을 통해 그림자를 제어할 수 있습니다
属性 | 值 | 备注 |
shadowColor | 任何CSS中的颜色值 | 可以使用透明度(alpha) |
shadowOffsetX | 像素值 | 值为正数,向右移动阴影;为负数,向左移动阴影 |
shadowOffsetY | 像素值 | 值为正数,向下移动阴影;为负数,向上移动阴影 |
shadowBlur | 高斯模糊值 | 值越大,阴影边缘越模糊 |
// 색상 검정, 20 % 투명도
context.shadowColor = 'rgba(0, 0, 0, 0.2)';
// 오른쪽으로 15px, 왼쪽으로 10px 이동
context.shadowOffsetX = 15;
context.shadowOffsetY = -10;
// 약간 흐린 그림자
context.shadowBlur = 2;
픽셀 데이터
context.getImageData(sx, sy, sw, sh): sx, xy는 점을 결정하고, sw: 너비, sh: 높이.
이 함수는 세 가지 속성을 반환합니다. 너비 각 행의 픽셀 수 높이 각 열의 픽셀 수
캔버스에서 얻은 각 픽셀의 RGBA 값(빨간색, 녹색, 파란색 및 투명도 값)의 데이터 그룹입니다.
context.putImageData(imagedata,dx,dy): 개발자는 이미지 데이터 세트를 전달할 수 있습니다. dx 및 dy를 사용하면 지정된 캔버스 위치로 이동합니다. 🎜>
들어오는 픽셀 데이터를 표시합니다.canvas.toDataUrl: 현재 캔버스에 표시된 데이터는 프로그래밍 방식으로 얻을 수 있습니다. 얻은 데이터는 텍스트 형식으로 저장되며 브라우저는 이를 이미지로 구문 분석할 수 있습니다.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











HTML의 테이블 테두리 안내. 여기에서는 HTML의 테이블 테두리 예제를 사용하여 테이블 테두리를 정의하는 여러 가지 방법을 논의합니다.

HTML의 Nested Table에 대한 안내입니다. 여기에서는 각 예와 함께 테이블 내에 테이블을 만드는 방법을 설명합니다.

HTML 여백-왼쪽 안내. 여기에서는 HTML margin-left에 대한 간략한 개요와 코드 구현과 함께 예제를 논의합니다.

HTML 테이블 레이아웃 안내. 여기에서는 HTML 테이블 레이아웃의 값에 대해 예제 및 출력 n 세부 사항과 함께 논의합니다.

HTML 순서 목록에 대한 안내입니다. 여기서는 HTML Ordered 목록 및 유형에 대한 소개와 각각의 예에 대해서도 설명합니다.

HTML에서 텍스트 이동 안내. 여기서는 Marquee 태그가 구문과 함께 작동하는 방식과 구현할 예제에 대해 소개합니다.

HTML onclick 버튼에 대한 안내입니다. 여기에서는 각각의 소개, 작업, 예제 및 다양한 이벤트의 onclick 이벤트에 대해 설명합니다.

HTML 입력 자리 표시자 안내. 여기서는 코드 및 출력과 함께 HTML 입력 자리 표시자의 예를 논의합니다.
