English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
HTML5 Canvas 경로는 HTML에서 사용됩니다.5화면에 다양한 유형의 형상(선, 원, 다각형 등)을 그리기 때문에 경로는 HTML에서 사용됩니다.5화면에 다양한 유형의 형상을 그리기
HTML5 Canvas 경로는 일련의 점으로 구성되며, 이 점들 간에 그리기 명령이 있습니다. 예를 들어, 일련의 점들 간에 직선이나 곡선이 있습니다.
HTML에서 사용되는 경로5화면에 다양한 유형의 형상(선, 원, 다각형 등)을 그리기 때문에 이 중요한 중심 개념을 이해하는 것이 매우 중요합니다.
use2D상문 함수 beginPath()와는 경로를 시작하고 끝내는 것을 보여줍니다 closePath() 다음과 같이:
var canvas = document.getElementById("ex1"); var context = canvas.getContext("2d");context.beginPath(); // ... 경로 그리기 작업 context.closePath();
경로로 그리기 할 때, 사용하는 것은 가상의 '펜' 또는 '지시자'입니다. 가상 지시자는 항상 어떤 점에 위치하고 있습니다. moveTo()를 사용하여2D Context 함수는 가상 지시자 이동을 완료합니다 moveTo(x, y) 다음과 같이:
context.moveTo(10,10);
이 예제에서 지시자를 점10,10
lineTo() 함수는 가상 지시자 위치에서 함수에 전달된 점까지 선을 그립니다. 이는 예제입니다:
context.beginPath(); context.moveTo(10,10); context.lineTo(50,50); context.closePath();
이 예제에서 지시자를 점10,10그런 다음 이 점에서 점50,50으로 이동합니다.
lineTo()는 가상의 지시자를 그 선의 끝으로 이동시킵니다. 따라서, 위의 예제에서 지시자는50,50, 그리고 그 점에 그림을 그리도록 지시합니다.
you indicate2D상문이 경로를 그리기 전까지 실제로 경로를 그리지 않습니다. 다음을 호출하여2D상문의 stroke()나 fill()는2D상文中 이 작업을 완료합니다.
이 stroke() 함수는 경로 작업으로 정의된 형상의 외곽선을 그립니다.
이 fill() 함수는 경로 작업으로 정의된 형상을 채웁니다.
이 두 가지 예제에서 stroke()와 fill()를 같은 형상에 적용했습니다:
<canvas id="ex1" width="500" height="75" style="border: 1px solid #cccccc;"> HTML5 Canvas not supported </canvas> <script> var canvas = document.getElementById("ex1");var context = canvas.getContext("2d"); context.beginPath(); context.moveTo(10,10); context.lineTo(60,50); context.lineTo(110,50); context.lineTo(10,10); context.stroke(); context.closePath(); context.beginPath(); context.moveTo(100,10); context.lineTo(150,50); context.lineTo(200,50); context.lineTo(100,10); context.fill(); context.closePath();</script>테스트해 보세요 ‹/›
이는 위 코드의 실행 결과입니다:
you can use lineWidth 2D상文的 속성 설정 여러 가지 펜 기능으로 그려진 선의 너비입니다. 이는 예제입니다:
context.lineWidth = 10;
위의 예제는 모든 이후 펜 스타일 작업의 선 너비를 설정합니다.10픽셀입니다.
이는 세 가지 선으로, 각 선의 너비는1,5하고10:
선 너비가1시점에서, 선의 추가적인 너비는 중심선 밖에 그려집니다.也就是说,如果您 from10,10부터100,10선을 그립니다. 선 너비는10이 경우, 이 선은10,5시작하여 확장됩니다10,15, 그런 다음 수평으로 확장됩니다100,5하고100,15그곳에서. 사각형처럼.
경로를 통해 라인을 그리는 경우, 라인의 라인 헤드를 설정할 수 있습니다. 라인 헤드는 라인 끝의 그리기 방식을 정의합니다.
라인 너비는 lineCap을 통해 설정됩니다.2D 컨텍스트의 속성은 다음 값을 취할 수 있습니다.
butt
round
square
이 값 butt는 선 끝이 평평하며 선과 직각입니다.
이 값 round는 반지름이 선 너비 반으로 같은 라운드 각을 가진 라운드 엔드를 생성합니다.
이 값 square는 행 끝에 사각형을 그리며, 사각형의 크기는 line width x line width입니다. / 2
이는 라인 헤드의 그룹 예제입니다. 모든 선의 선 너비는10가장 왼쪽의 선은 lineCap 값 butt를 사용합니다. 중간 선은 lineCap 값 round를 사용합니다. 가장 오른쪽의 행은 lineCap 값 square를 사용합니다.
lineCap의 값 butt와 square는 그리기와의 차이가 어렵게 보입니다. 따라서, butt와 square를 사용하여 가까이에 그려서 차이를 볼 수 있도록了一些示例。위쪽이나 왼쪽은 butt, 아래쪽이나 오른쪽은 square를 사용합니다.
그렇게 보면 lineCap 값에 따라 라인의 끝에 추가적인 사각형을 그리며, 이는 라인이 조금 더 길어 보입니다.
lineJoin 2D 컨텍스트의 속성은 두 줄을 연결하는 점을 그리는 방법을 정의합니다. 두 줄을 연결하는 점은 '행 연결'이라고 합니다. lineJoin 속성은 다음 값을 가질 수 있습니다:
miter
bevel
round
이는 행 연결을 설정하는 세 가지 코드 예제입니다:
context.lineJoin = "miter"; context.lineJoin = "bevel"; context.lineJoin = "round";
miter 결과 값은 직선을 연결하는 데 사용되는 직선 각을 그립니다.
bevel 결과 값은 직선(직선) 각을 그리기 위해 직선을 연결하는 데 사용됩니다.
round 결과 값은 직선 라운드 각을 그리기 위해 직선을 연결하는 데 사용됩니다.
이는 lineJoin 속성 값으로 사용되는 miter, bevel, round의 세 가지 예제입니다. (좌측부터)
2D 컨텍스트 기능 arc()가 캔버스에서 원孤를 그립니다.
이 arc() 함수는6파라미터:
x: 원의 중심점의 x 좌표
y: 원의 중심점의 y 좌표
radius: 원의 반지름
startAngle: 원의 시작의弧도角
endAngle: 원의 끝의弧도角
anticlockwise: 삽입 방향이 반시계 방향인지(시계 방향이 아님)를 설정합니다.
이는 코드 예제입니다:
context.lineWidth = 3; var x = 50; var y = 50; var radius = 25; var startAngle = (Math.PI / 180) * 45; var endAngle = (Math.PI / 180) * 90; var anticlockwise = false; context.beginPath(); context.arc(x, y, radius, startAngle, endAngle, anticlockwise); context.stroke(); context.closePath();
이 코드 예제는 원심점이50,50, 반지름이25픽셀,45도까지 이어집니다.180도. 0도에서360도는弧도로 변환됩니다.
이는 화면에 그려진 코드 예제의 모습입니다:
이는 동일한 코드 예제지만 anticlockwise를 true로 설정했습니다:
전체 원을 그리기 위해 간단히 startAngle을 0으로 설정하고 endAngle을2 * Math.PI는(Math.PI / 180) * 360
2D 컨텍스트는arcTo()
기능을 사용할 수 있습니다.lineTo()
하고기능을 모방합니다.arc()
를 건너뛰기 때문에
quadraticCurveTo() 함수는 한 점에서 다른 점으로 두 번째 베塞尔 곡선을 그립니다. 이 곡선은 단일 제어점으로 제어됩니다. 이는 코드 예제입니다:
context.lineWidth = 3; var fromX = 50; var fromY = 50; var toX = 100; var toY = 50; var cpX = 75; var cpY = 100; context.beginPath(); context.moveTo(fromX, fromY); context.quadraticCurveTo(cpX, cpY, toX, toY); context.stroke(); context.closePath();
이 코드 예제는 제어점을 사용합니다.75,100(cpX, cpY)을 그려줍니다.50,50부터100,50의 곡선. 결과 곡선은 다음과 같습니다:
화면에 있는 작은 점은 제가 여기서 그린 제어점입니다. 일반적으로 그는 곡선의 일부가 아닙니다.
bezierCurveTo() 함수는 한 점에서 다른 점으로 세 번째 베塞尔 곡선을 그립니다. 세 번째 베塞尔 곡선은2개의 제어점을 가지고 있으며, 두 번째 베塞尔 곡선은 단일 제어점만 가집니다.1개의 제어점입니다. 이는 코드 예제입니다:
context.lineWidth = 3; var fromX = 50; var fromY = 50; var toX = 300; var toY = 50; var cp1X = 100; var cp1Y = 100; var cp2X = 250; var cp2Y = 100; context.beginPath(); context.moveTo(fromX, fromY); context.bezierCurveTo(cp1X, cp1Y, cp2X, cp2Y, toX, toY); context.stroke(); context.closePath();
이 코드 예제는 제어점을 사용합니다.100,100(cp1X, cp1Y)과250,100(cp2X, cp2Y)을 그려주는 곡선을 그려줍니다.50,50부터300,50의 곡선. 결과 곡선은 다음과 같습니다:
화면에 있는 두 개의 작은 점은 제가 그린 제어점입니다. 그것들은 그 위치를 보여주기 위해 사용됩니다. 그들은 곡선의 일부로 그려지지 않습니다.
다른 시작점, 끝점 및 제어점을 사용하는 예제입니다:
context.lineWidth = 3; var fromX = 50; var fromY = 50; var toX = 300; var toY = 50; var cp1X = 100; var cp1Y = 10; var cp2X = 250; var cp2Y = 100; context.beginPath(); context.moveTo(fromX, fromY); context.bezierCurveTo(cp1X, cp1Y, cp2X, cp2Y, toX, toY); context.stroke(); context.closePath();
이는相应的曲线:
그리고, 두 개의 작은 점은 명확히 렌더링할 수 있는 제어점입니다