> 웹 프론트엔드 > H5 튜토리얼 > HTML5 Convas API에 대한 자세한 설명method_html5 튜토리얼 기술

HTML5 Convas API에 대한 자세한 설명method_html5 튜토리얼 기술

WBOY
풀어 주다: 2016-05-16 15:46:50
원래의
1494명이 탐색했습니다.

☆ canvas.getContext('2d')

캔버스에 직접 그릴 수는 없습니다.
2차원 공간 그리기의 기본을 얻으려면 이 방법을 사용해야 합니다.

☆ context.beginPath()

은 새로운 경로 그리기 시작을 나타냅니다.

☆ context.isPointInPath(x, y)

경로에 특정 지점이 있는지 확인하세요. 좌표계가 변환된 후에는 이 방법이 작동하지 않습니다.

☆ context.moveTo(x,y)

는 작업판에서 브러시를 들어 올리고 펜촉을 작업판에서 멀리 둔 다음 펜촉을
(x, y) 좌표에 배치하고 이 새 위치에서 새 그리기를 시작하는 것과 같습니다. .

☆ context.lineTo(x, y)

는 브러시 끝이 작업판을 벗어나지 않는 것과 동일합니다. 브러시 끝은 현재 좌표 위치에서
(x, y) 좌표로 이동하여 선분을 그립니다.

☆ context.Stroke()

캔버스에 그림을 그린 후 일부 그리기 작업에서는 그려진 내용이 표시되도록
이 메서드를 호출해야 합니다.

☆ context.save()

이 방법은 향후 convas 변경에 관계없이 convas의 현재 상태를 저장합니다.
이러한 변경을 수행하기 전에 convas 상태를 저장하는 한
context.restore를 호출할 수 있습니다. () 메서드를 사용하여 나중에 저장된 상태로 복원합니다. 일반적으로 캔버스의 원래 상태(그리거나 변경하지 않은
)는 새 그리기
또는 수정 작업 전에 저장하고 새 그리기 또는 수정 작업이 끝난 후 매번 원래 상태로 복원해야 합니다. 이
는 향후 그리기 작업에 도움이 될 것입니다.
사실 캔버스의 2D 그리기 환경 컨텍스트의 많은 속성과 일부 메서드는 상태와 관련되어 있습니다
. 각 속성의 값이 변경되면(또는 그리기 상태를 변경하는 데 일부 메서드가 사용됨)
도면 상태는 변경입니다. 각 변경 후 저장되면 속성의 여러 상태가 스택 형태로 저장됩니다. 스택 순서에 따라 Restore() 메서드를 여러 번 호출하면 해당 저장된 상태로 돌아갈 수 있습니다.

☆ context.translate(x, y)

현재 좌표 원점을 (x, y)로 이동시키는 방법입니다.

☆ context.restore()

캔버스 상태를 마지막으로 저장된 상태로 복원합니다.

☆ context.closePath()

이 명령은 lineTo

함수와 동작이 매우 유사합니다. 차이점은 대상이

자동으로 경로의 시작으로
가정된다는 점입니다. 그러나 closePath는
현재 모양이 닫혀 있거나
완전히 포함된 영역을 형성한 경우 이는 향후 채우기 및 획
에 유용할 것입니다.
이 시점에서 더 많은
세그먼트를 계속 사용할 수 있습니다. 또는
언제든지 startPath를 다시 시작하고
경로 목록을 완전히 지울 수 있습니다.

☆ context.fill();

채우기 스타일을 설정한 후 닫힌 경로를 채웁니다. 이 메서드를 호출한 후에는

context.Stroke() 메서드를 호출할 필요가 없습니다.


☆ context.fillRect(x, y, 너비, 높이)

(x, y)에 너비와 길이(너비, 높이)가 있는 직사각형 영역을 그리고 채웁니다.

이 메서드를 호출한 후에 context.strok() 메서드를 호출할 필요가 없습니다.


☆ context.StrokeRect(x, y, 너비, 높이)

(x, y)에 너비와 길이(너비, 높이)가 있는 직사각형 윤곽선을 그립니다.

☆ context.clearRect(x, y, 너비, 높이)

위치(사각형의 왼쪽 위 모서리)가 (x, y,)이고 크기가 (너비, 높이)인 직사각형 영역을 청소합니다

.

직사각형 영역에서 모든 콘텐츠를 제거하고
원래의 투명한 색상으로 재설정합니다.
캔버스에서 직사각형을 지우는 기능은
HTML5 Canvas API를 사용하여 애니메이션과 게임을 만드는 데 핵심입니다.
캔버스의 여러 부분을 반복적으로 그리고 지우는 방식으로
애니메이션의 환상을 표현하는 것이 가능하며
이미 웹에 많은 예가 존재합니다. 원활하게
클리핑 기능과 보조
버퍼 캔버스를 활용하여
빈번한 캔버스 지우기
로 인한 깜박임을 최소화해야 합니다.

☆ context.drawImage( )

이 메서드에는 캔버스에 이미지를 그릴 수 있는 세 가지 오버로드가 있습니다. 이미지 소스는
페이지의 img 태그, JS의 이미지 객체 및 비디오 프레임일 수 있습니다.
•context.drawImage(img, x, y)
(x, y)에 이미지 img를 사용하여 이미지를 그립니다. 캔버스 크기가 이미지보다 크면
전체 이미지가 그려지고, 이미지가 캔버스보다 크면 초과된 부분이 잘립니다.
•context.drawImage(img, x, y, w, h)
(x, y)에 있는 이미지 img를 사용하여 길이와 너비(w, h)로 직사각형 영역을 그립니다. 이미지
의 크기가 (w, h)로 변경됩니다.
•context.drawImage(img, imgx, imgy, imgw, imgh, cx, cy,
cw, ch)
img 이미지를 그리기 개체로 사용하고 img의 위쪽 위치를 ( imgx, imgy
) 캔버스 내 (cx, cy)
위치에 크기(imgw, imgh)의 영역이 그려지고, 크기(cw, ch)의 영역이 그려집니다.
이미지에서 잘린 영역이 이미지 범위를 초과하는 경우 예외가 발생합니다.
•context.drawImage(video, vx, vy, vw, vh, cx, cy, cw, ch)
비디오 개체를 그리기 개체로 사용하고 비디오의 위쪽 위치(vx, vy)를 가져옵니다.
) (vw, vh) 크기의 프레임을 캔버스의 (cx, cy) 위치에 (cw, ch) 크기의 영역을 그립니다.
또한 drawImage()의 첫 번째 매개변수는 다른 캔버스일 수도 있습니다.

☆ context.getImageData(x, y, 너비, 높이)

이 메서드는 캔버스의 위치(x, y)에서 크기(너비, 높이)를 가져옵니다.

픽셀 영역이며 반환 값은 ImageData 개체입니다. ImageData에는 너비,
높이, 데이터라는 세 가지 속성이 있습니다.
data 속성은 픽셀 배열입니다. 배열의 연속된 4개 요소는 차례로 RGBA 색상 및 투명도 정보를 포함합니다. 연속된 4개의 요소
는 하나의 픽셀에 속해야 하며, 첫 번째 요소의 위치는 임의로 선택되지 않습니다.
캔버스의 지정된 영역
을 위에서 아래로, 왼쪽에서 오른쪽으로 순서대로 스캔하여 픽셀 배열을 얻습니다. 픽셀 배열의 요소 수는 너비 * 높이 * 4입니다. 특정
위치에 대한 픽셀 정보를 얻으려면.
이 방법을 사용하는 웹페이지를 브라우저에서 로컬 파일로 열면 제대로 작동하지 않으며
대개 보안 오류가 발생합니다. 이 문제는
웹 서버에 파일을 업로드한 후 접근 권한을 요청하면 해결될 수 있습니다. 또한, 관련된 이미지, JS 및
HTML은 동일한 도메인 이름에서 와야 합니다. 그러나 IE9은 로컬 파일을 통해 액세스할 수 있습니다.
예제는 다음과 같습니다.



코드를 복사하세요. 코드는 다음과 같습니다.
// 픽셀 영역 가져오기
var imageData = context.getImageData(0, 0, 3, 3) // 3x3
그리드;

var width = imageData.width;
//픽셀 영역 내 특정 픽셀의 위치
var x = 2
var y = 2; 해당 요소의 픽셀 배열 인덱스에 있습니다.
var pixelRedindex = ((y-1)*(width*4)) ((x-1)*4); var pixelGreenindex = pixelRedindex 1; >var pixelBlueindex = pixelRedindex 2
var pixelAlphaindex = pixelRedindex 3;

var pixel = imageData.data; // CanvasPixelArray

var red = pixel[pixelRedindex];
var green = pixel[pixelGreenindex];
var blue = pixel[pixelBlueindex]
var alpha = pixel[pixelAlphaindex];




☆ context.createImageData(w, h)

(w, h) 크기의 ImageData 객체를 생성합니다.

ImageData 객체의 의미는 getImageData()로 얻은 ImageData 객체와 동일합니다.

☆ context.putImageData(ImageData, x, y, x1, y1, w, h)


캔버스의 (x, y)에 ImageData 객체를 그립니다. 마지막 4개의 매개변수는 자르기 직사각형의 위치와 크기를 설정하는 데 사용되는 선택적 매개변수입니다.

☆ context.createLinearGradient(x1, y1, x2, y2)


(x1, y1)과 (x2, y2) 사이의 선형 그래디언트를 생성합니다. 예:

코드 복사

코드는 다음과 같습니다.
vargradientName = context.createLinearGradient( -5, -50, 5, -50);

☆ Gradient.addColorStop(오프셋, 색상)

그라데이션에 사용되어 다양한 위치에 그라데이션 색상을 설정합니다. 색상 인수 는

오프셋 위치에서 획이나 채우기에 적용하려는 색상입니다. 오프셋 위치는 0.0에서 1.0 사이의 값으로, 그라데이션 선을 따라 얼마나 멀리 있는지를 나타냅니다다음과 같은 색상에 도달해야 합니다.

gradientName.addColorStop(1, '#552200')

색상은 CSS의 rgba(r,g,b,a) 기능을 사용하여 다음과 같은 투명한 그라데이션을 생성할 수 있습니다.

코드 복사

코드는 다음과 같습니다.

//50% 색상 투명 그라데이션 생성
gradientName.addColorStop(0.2, 'rgba(0, 0, 0, 0.5)');

☆ context.createRadialGradient(x0, y0, r0, x1, y1, r1)

두 원 사이에 방사형 그라데이션 영역을 만듭니다. 처음 세 인수는
반경이 r0인 (x0, y0) 중심의 원을 나타내고
마지막 세 인수는
반경 r1인 (x1, y1) 중심의 두 번째 원을 나타냅니다.
두 원 사이의 영역

을 가로질러 그려집니다.

☆ context.createPattern(img, 'repeatPattern')

이미지 img를 사용하여
스트로크 스타일 스타일 또는 반복 유형의 반복 패턴이 있는 특정 경로의 채워진 fillStyle 스타일을 생성합니다. RepeatPattern의 값은
반복, 반복-x, 반복-y, 반복 없음 중 하나일 수 있습니다. 예:

코드 복사
코드는 다음과 같습니다.

context.strokStyle = context.createPattern(자갈,
'반복');

img 매개변수는 다른 캔버스나 비디오일 수도 있습니다

☆ context.scale(xMultiple, yMultiple)

두 매개변수는 각각 x 및 y 방향에서 개체의 후속 도면 배율을 지정합니다. 1보다 큰 경우
는 확대를 의미하고 0과 1 사이는 축소를 의미합니다. 음수 값이면 반사, 뒤집기 등의 효과를 얻을 수 있습니다
.

☆ context.rotate(angle)

은 현재 좌표 원점을 회전 중심으로 하고 단위는 라디안
으로하여 도면 환경 컨텍스트를 회전하는 데 사용되며 Math.PI와 결합됩니다. 매개변수 각도가 양수 값이면 시계 방향으로 회전하고, 음수 값이면 시계 반대 방향으로 회전합니다.

☆ context.transform(ScaleX,skewY,skewX, ScaleY, transX, transY)

그리기 개체의 크기, 기울이기, 위치를 제어하는 ​​데 사용되는 함수입니다.

. ScaleX 및 ScaleY는 각각 x 및 y 좌표의 크기 조정입니다. SkewY는
컨텍스트의 수직 전단을 제어합니다. 해당 값은 양수 또는 음수 부동 소수점 또는 모든 크기의 정수일 수 있습니다. 이는 세로 좌표에서 y'= y 스큐Y * x를 수행하는
과 동일합니다. 꼬챙이 마지막 두 매개변수는 번역(x, y)의 두 매개변수
와 동일합니다.


☆ context.setTransform(ScaleX,skewY,skewX,ScaleY,

transX, transY)


이 방법은 변환과 유사하지만 이전에 적용했던 변환, 크기 조정, 회전 방법의 효과가
결합되어 복잡한 복합 변환

효과가 발생합니다. setTransform 메소드는 컨텍스트의 원래 상태에서 변환을 적용하며

이전 변환과 혼합되지 않습니다. 따라서 context.setTransform(1, 0, 0, 1,
0, 0)은 일반적으로 컨텍스트의 변환 상태를 원래 값으로 복원하는 데 사용됩니다.

☆ fillText(텍스트, x, y, 최대 너비)

(x, y) 좌표에 텍스트로 채워진 텍스트를 그립니다. maxwidth는 선택적 매개변수

로, 전체 텍스트의 너비와 텍스트 간격의 합을 제한하는 데 사용됩니다. 전체 너비와 간격

이 이 값을 초과하면 단일 텍스트 문자의 너비와 문자 간격이 제한됩니다.

개별 문자가 길어지고 간격이 작아집니다. 채우기 텍스트는 context.font,
context.fillStyle, context.textAlign 및 기타 속성을 결합하여 그릴 수 있습니다.


☆ 스트로크텍스트(텍스트, x, y, 최대너비)

(x, y) 좌표에 경로 내용 텍스트를 사용하여 텍스트를 그립니다. maxwidt는 모든 텍스트의 너비와 텍스트 간격의 합을 제한하는 데 사용되는 선택적 매개변수 입니다. 이 값을 초과하면 단일 텍스트 문자의 너비와 문자 간격이 제한됩니다.

개별 문자가 길어지고 간격이 작아집니다. context.font,

context.textAlign, context.lineWidth, context.StrokeStyle 및 기타
속성을 ​​결합하여 경로 텍스트를 그릴 수 있습니다.
예:





코드 복사

코드는 다음과 같습니다. varfontSize = 100 ;
context.font =fontSize "px Arial";
while(context.measureText("Hello world!").width > 140)
{
fontSize--;
context .font =fontSize "px Arial";
}
context.fillText("Hello world!", 10, 10);
context.fillText("글꼴 크기는 "fontSize "px입니다. ", 10, 50);

☆ context.measureText("text")

이 메서드는
현재 글꼴, textAlign, textBaseline 값을 기준으로 텍스트가 차지하는 영역의 크기를 계산합니다. text 매개변수는 그리는 데 사용되는 텍스트 내용입니다. 이
메소드는 TextMetrics 객체를 반환합니다. 현재 TextMetrics 객체에는
width 속성이 하나만 있으며 앞으로 더 많은 속성이 제공될 수 있습니다.

☆ context.ect(x, y, w, h)

점 (x, y)에 너비가 w, 높이가 h인 직사각형을 그립니다. 현재 지점은 무시됩니다. 그러나 직사각형이 그려진 후에는
(x, y)가 새로운 현재 점이 됩니다.

☆ context.arc(x, y, radius, startAngle, endAngle,
시계 반대 방향)

호를 그립니다. x, y는 호 중심의 좌표이고, radius는 호의 반경입니다.
startAngle, endAngle은 각각 시작 라디안과 끝 라디안입니다.
Pi는 Math.PI로 표시됩니다. 값은 0입니다. 호는 오른쪽 수평입니다.
는 호를 그리는 방향을 나타내며, 이는 선택적 매개변수입니다. Boolean 값, true는 시계 반대 방향, false
는 시계 방향, 기본값은 false입니다. . 이 메서드를 사용하면 lineTo 메서드를 생략할 수 있습니다.
메서드를 사용하여 호를 그린 후, 후속 경로 그리기는 호
의 끝점부터 시작됩니다.

☆ context.arcTo(x1, y1, x2, y2, radius)

현재 점과 (x1, y1)은 선 L1을 형성하고, (x1, y1)과 (x2, y2)는 또 다른
선 L2를 형성하고, 현재 점과 (x2, y2)는 세 번째 선을 형성합니다. L3. (x1, y1)을 원점으로 하고,
L1과 L2는 좌표축이고, 반지름은 L1과 L2에 접하는 반지름이며, "선분"과 같은 사분면의 원 O1에 있습니다. " L3, L1과의 접선점은 p1이고, L2와의 접선점은 p2입니다. 원 O1의 p1
과 p2 사이에 두 개의 호가 있습니다. 원점(x1, y1)에 더 가까운 호(원의 더 짧은
호)가 그려지는 호입니다.

추가로 현재 점과 (x1, y1) 사이의 호를 연결하는 선분이 그려집니다.

경로 그리기는 연속적이므로 현재 점과 (x1, y1) 사이의 선분이 그려집니다. 먼저 Draw를 그린 다음
를 그린 다음 호를 그립니다. 접선점 p2가 다음 현재 점이 됩니다.
이 방법은 둥근 직사각형을 그릴 때 자주 사용됩니다.

☆ context.quadraticCurveTo(x1, y1, x2, y2)

현재 좌표와 (x2, y2) 사이에 2차 베지어 곡선 세그먼트를 그리고 곡률은

(x1, y1)에 의해 제어됩니다. (x1, y1)은 곡선 세그먼트에 없습니다.

HTML5 Canvas API의 곡선에 대한 다른 옵션으로는

bezierCurveTo, arcTo 및 arc 함수가 있습니다.
이 곡선은
추가 제어점, 반경 또는 각도를 사용하여
곡선의 특성을 결정합니다. .

☆ context.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y)

현재 지점과 (x, y) 사이에 제어점 (cp1x, cp1y) 및 (cp2x, cp2y)
를 사용하여 3차 베지어 곡선을 그려 곡률을 제어합니다.

☆ context.clip()

이 방법은 마지막으로 그려진 닫힌 경로를 기반으로 클리핑 영역
(클립 영역)을 생성합니다. 클리핑 영역은 마스크와 동일합니다. 앞으로 그려지는 내용 중 클리핑 영역에 해당하는 부분만 표시됩니다.

☆ context.isPointInPath(x, y)

그려진 경로 내에 좌표(x, y)가 있는지 확인하세요. 반환 값은 true 또는

false입니다.

☆ canvas.toDataURL(type, args)

이 방법을 사용하면 캔버스를 이미지로 변환할 수 있으며, 이미지는 Base64 인코딩을 기반으로 합니다.

이 두 개의 매개변수를 지정하지 않으면 매개변수 없이 이 메소드가 호출되며 변환된 이미지 형식은 png 형식
입니다.
•유형: image/png, image/jpeg 등 변환할 이미지 형식을 지정합니다.
•args: 선택적 매개변수. 예를 들어 유형이 image/jpeg인 경우 args는 이미지 품질을 지정하기 위해
0.0에서 0.1 사이의 값일 수 있습니다.
예를 들어 다음 코드는 캔버스에 그려진 콘텐츠를 새 브라우저 창
또는 탭에서 엽니다.


코드 복사코드는 다음과 같습니다.
var canvas = document.getElementById("myCanvas");
window.open(canvas.toDataURL("image/png) "));

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿