찾다
웹 프론트엔드H5 튜토리얼HTML5 Canvas 태그는 collection_html5 튜토리얼 기술을 사용합니다.

1. 기본 개념

캔버스란

HTML5에 정의된 새로운 HTML 요소입니다. 이 요소는 일반적으로 JavaScript를 통해 HTML 페이지에서 그래픽 그리기, 이미지 합성 등을 수행하는 데 사용할 수 있으며 일부 애니메이션을 수행하는 데에도 사용할 수 있습니다. 물론 HTML5 사양은 아직 초안 단계이고 공식 출시는 2010년까지 기다려야 할 수도 있지만, 많은 브라우저는 이미 HTML5 사양의 일부를 지원하고 있습니다. 현재 캔버스 요소를 지원하는 브라우저는 Firefox 3, Safari 4, Chrome 2.0 등입니다. 따라서 이 페이지의 예제를 실행할 때 위 브라우저 중 하나를 사용하고 있는지 확인하시기 바랍니다.

Mozilla에는 캔버스에 관한 튜토리얼이 많지만, 저는 제가 배우는 과정을 기록해두기로 했습니다. 내가 작성한 내용이 충분히 명확하지 않다고 생각되면 참고 자료에서 Mozilla 웹사이트의 Canvas 튜토리얼 링크를 찾을 수 있습니다.

또한 여기에서 몇 가지 흥미로운 캔버스 예제를 찾을 수 있습니다.

캔버스 시작하기

캔버스를 사용하는 방법은 매우 간단합니다. 다른 HTML 요소를 사용하는 것과 마찬가지로 페이지에 태그만 추가하면 됩니다.

코드는 다음과 같습니다.




물론 이는 단순히 Canvas 개체를 생성하고 이에 대한 작업을 수행하지 않습니다. 이때 캔버스 요소는 div 요소와 다르지 않습니다. 페이지에서는 아무것도 알 수 없습니다. :)
또한, canvas 요소의 크기는 width 및 height 속성을 통해 지정할 수 있는데, 이는 img 요소와 다소 유사합니다.

Canvas의 핵심: Context
앞서 언급했듯이 Canvas 객체는 JavaScript를 통해 조작하여 그래픽 그리기, 이미지 합성 등을 수행할 수 있습니다. 이러한 작업은 Canvas 객체 자체를 통해 수행되지 않으며, 하지만 Canvas 객체의 getContext 메소드를 통해 Canvas 작업 컨텍스트를 획득하여 수행됩니다. 즉, 나중에 Canvas 개체를 사용할 때 Canvas 개체의 Context를 다루게 되며, Canvas 개체 자체를 사용하여 Canvas 개체의 크기와 같은 정보를 얻을 수 있습니다.
캔버스 개체의 컨텍스트를 가져오는 것은 매우 간단합니다. 호출할 때 현재 사용 가능한 유일한 유형 값은 2d입니다.



Firefox 3.0.x의 당혹감

Firefox 3.0.x는 캔버스 요소를 지원하지만 사양을 완전히 준수하여 구현되지는 않습니다. 따라서 사양의 fillText 및 MeasureText 메서드는 Firefox 3.0.x에서 여러 Firefox 관련 메서드로 대체됩니다. 3.0 .x에서 Canvas를 사용하는 경우 먼저 다양한 브라우저에서 이러한 방법 간의 차이점을 수정해야 합니다.

다음 코드는

Mozilla Bespin 프로젝트에서 가져온 것입니다. 이 코드는 Firefox 3.0.x에 있는 Canvas의 Context 개체와 HTML5 사양 간의 불일치를 수정합니다.

function fixContext(ctx) {

// * Firefox 3.0.x 텍스트 렌더링을 HTML 5 표준으로 업그레이드
if (!ctx.fillText && ctx.mozDrawText) {
ctx.fillText = function( textToDraw, x, y, maxWidth) {
ctx.translate(x, y);
ctx.mozTextStyle = ctx.font;
ctx.mozDrawText(textToDraw); x, -y);
}
// * 측정 텍스트 설정
if (!ctx.measureText && ctx.mozMeasureText) {
ctx.measureText = function(text) {
if (ctx.font) ctx.mozTextStyle = ctx.font;
var width = ctx.mozMeasureText(text)
return { width: width }
}; 🎜>// * html5MeasureText 설정
if (ctx.measureText && !ctx.html5MeasureText) {
ctx.html5MeasureText = ctx.measureText;
ctx.measureText = function(text) {
var textMetrics = ctx.html5MeasureText(text);
// 만들 때까지 가짜로 만듭니다
textMetrics.ascent = ctx.html5MeasureText("m").width
return textMetrics; 🎜>}
// * 다른 브라우저의 경우 작업이 필요하지 않습니다.
if (!ctx.fillText) {
ctx.fillText = function() {}
}
if ( !ctx.measureText) {
ctx.measureText = function() { return 10 }
return ctx;

참고: Opera 9.5부터 Opera는 HTML5 사양에서 fillText 및 관련 메서드와 Canvas 개체의 속성을 지원하지 않습니다.



안녕하세요, 캔버스!


Canvas에 대한 사전 이해 후, 우리는 유명한 HelloWorld "Hello, Canvas"의 또 다른 분기인 첫 번째 Canvas 프로그램을 작성하기 시작했습니다.




运行示例,Canvas 对象所在区域显示例“Hello, World!”,这正是代码中 ctx.fillText("Hello, World!", 20, 20); 당신의 작업을 도와드리겠습니다.

fillText 以及상关属성

void fillText(DOMString text, float x, float y, [선택 사항] float maxWidth);

其中 maxWidth 表示显示文字时最大的宽titude, 可以防止文字溢에서 出,不过我测试中发现에서 Firefox 与 Chomre 中指定了 maxWidth 时也没任何效果。

이、로径

형상적인基础 - 路径

Canvas 中, 所有基本图shapecity 是以路径为基础的, 也就是说, 我们在调用 2dContext 의 lineTo, ret 等方法时 , 其实就是往已经的 Context 路径集合中再添加一些路径点,지금最后使用 채우기 或 스트로크 方法进行绘實时,city是依据这些路径点来进行填充或画线。

基本路径方法

1. BeginPath, closePath

앞면에 있는 공유 방식은 已经介绍过,分别用来communica Context 开始一个new 路径 and 关闭当前路径.

Canvas에서 中使用路径时,应该要保持一个良好的习惯,每次开始绘绘径前guide要调用一次 beginPath 방법,否则画来的效果难看不说,还会严影响性能。

아래쪽 인터페이스에서 左边적 형태가 每次绘 형태로 제조되어 이전 도시에서 시작됩니다.只在绘所有图shape前调用了一次BeginPath 来清除路径,因此,虽然这里是使用 边框color是 #666, 但是右边的图shape颜color比左边 的深一些 , 因为每次使用 Stroke 绘代边框时,会把 前的路径再次绘제 一遍,叠加起来颜color就比原来深一些。


Context의 경로 수가 적을 경우 표시 효과를 고려하지 않으면 성능이 괜찮지만, Context의 경로 수가 많으면 새 경로 그리기를 시작하기 전에 BeginPath를 사용하지 않습니다. , 각 도면이 이전 경로를 다시 그려야 하고 성능이 기하급수적으로 떨어지기 때문입니다.

따라서 특별한 요구 사항이 없는 한 경로 그리기를 시작하기 전에 매번 새로운 경로를 시작하기 위해 BeginPath를 호출해야 합니다.


2. 이동과 직선 moveTo, lineTo, ret








void moveTo(in float x, in float y);

캔버스에서 경로를 그릴 때 일반적으로 시작점을 지정할 필요가 없습니다. 기본 시작점은 마지막으로 그린 ​​경로의 끝점이므로 시작점을 지정해야 하는 경우에는 다음을 사용해야 합니다. moveTo 메소드는 이동할 위치를 지정합니다.

void lineTo(in float x, in float y);

lineTo 메소드는 지정된 위치에 대한 직접 경로를 그립니다. lineTo 메소드를 호출하면 Context 내부의 그리기 시작점이 직선의 끝점으로 이동하게 됩니다.

void ret(float x, float y, float w, float h);

Rect 메소드는 매개변수를 통해 왼쪽 위 모서리 위치, 너비 및 높이를 지정하여 직사각형 경로를 그리는 데 사용됩니다. ect를 호출한 후 Context의 그리기 시작점은 ect가 그린 사각형의 왼쪽 위 모서리로 이동합니다.

Rect 메소드는 나중에 소개할 arc 메소드나 다른 path 메소드와는 조금 다릅니다. Context에서 내부적으로 유지하는 시작점을 사용하는 것이 아니라 매개변수를 사용하여 시작점을 지정합니다.

3. 곡선 arcTo, arc,quadraticCurveTo, bezierCurveTo

void arcTo(float x1, float y1, float x2, float y2, float 반경);

WHATWG 문서의 지침에 따르면 이 방법은 두 광선 중 하나가 Context를 통과하여 시작점을 그리며 끝점은 (x1, y1)이며, 두 광선에 접하는 호를 그리는 것입니다. 다른 하나는 (x2, y2)를 통과하고 끝점은 (x1, y1)입니다. 이 호는 이 두 광선에 접하는 가장 작은 호입니다. arcTo 메소드를 호출한 후 호와 광선 사이의 접선점(x1, y1)-(x2, y2)을 현재 경로에 추가하여 다음 그리기의 시작점으로 사용합니다.

테스트 결과 현재 Firefox와 Opera에서는 이 방법을 잘 지원하지 않으며 Chrome과 Safari 4에서만 올바른 경로를 그릴 수 있는 것으로 나타났습니다.





void arc(float x, float y, float 반경, float startAngle, float endAngle, 부울 반시계 방향);

arc 방법은 중심 위치, 시작 라디안 및 끝 라디안을 통해 호의 위치와 크기를 지정하여 호 경로를 그리는 데 사용됩니다. 이 방법은 그리기 시작에 의존하지 않습니다

. Context에 의해 유지되는 포인트입니다. 호를 그릴 때 회전 방향은 마지막 매개변수인 시계 반대 방향으로 지정됩니다. true이면 시계 반대 방향, false이면 시계 방향입니다.

void QuadraticCurveTo(in float cpx, in float cpy, in float x, in float y);

quadraticCurveTo 메서드는 2차 스플라인 경로를 그리는 데 사용됩니다. 매개변수 cpx 및 cpy는 제어점의 위치를 ​​지정하고, x 및 y는 끝점의 위치를 ​​지정하며, 시작점은 에 의해 유지되는 그리기 시작점입니다. 문맥.

void bezierCurveTo(in float cp1x, in float cp1y, in float cp2x, in float cp2y, in float x, in float y);

bezierCurveTo 메서드는 베지어 곡선 경로를 그리는 데 사용됩니다. 이는 QuadraticCurveTo와 유사하지만 베지어 곡선에는 두 개의 제어점이 있으므로 매개변수의 cp1x, cp1y, cp2x, cp2y를 사용하여 경로의 위치를 ​​지정합니다. 두 개의 제어점. x와 y는 술의 위치를 ​​지정합니다.

var canvas = document .getElementById("canvas");

var ctx = canvas.getContext("2d");
ctx.translate(10, 10)
ctx.beginPath(); (50, 50, 50, 0, Math.PI, true);
ctx.Stroke(); ";
ctx.moveTo(110, 50);
ctx.quadraticCurveTo(160, 0, 210, 50);
ctx.Stroke();
ctx.beginPath();
ctx.StrokeStyle = "빨간색";
ctx.lineTo(160, 0)
ctx.lineTo(210, 50); 스트로크();// bezierCurveTo
ctx.beginPath();
ctx.StrokeStyle = "#000"
ctx.moveTo(220, 50); 250, 0, 280, 10, 320, 50);
ctx.strove();
ctx.beginPath()
ctx.stroveTo(220) , 50);
ctx.lineTo(280, 10)
ctx.lineTo(320, 50); 🎜>


4. 채우기, 획, 자르기


칠과 획의 두 가지 방법은 이해하기 쉽고 각각 패스를 채우고 패스 선을 그리는 데 사용됩니다.

클립 메서드는 캔버스의 클리핑 영역을 설정하는 데 사용됩니다. 클립 메서드를 호출한 후의 코드는 설정된 클리핑 영역에만 유효하며 다른 위치에는 영향을 주지 않습니다. 이 메서드는 로컬 업데이트를 수행할 때 매우 유용합니다. 기본적으로 클리핑 영역은 왼쪽 위 모서리가 (0, 0)이고 너비와 높이는 각각 Canvas 요소의 너비 및 높이와 동일한 직사각형입니다.




이 그림을 그릴 때 fillRect(0, 0, 100, 100)를 두 번 사용하여 100x100 직사각형을 채웠지만 표시된 결과는 두 번째로 가운데 부분만 채워졌기 때문입니다. 두 번째 채우기는 가운데의 작은 영역에만 영향을 미치도록 두 개의 채우기 사이에 클리핑 영역을 설정하는 데 클립 메서드가 사용됩니다.



5. 클리어Rect, fillRect, 스트로크Rect

이 세 가지 메소드는 경로 메소드가 아니라 캔버스의 배경과 동일한 캔버스의 내용을 직접 처리하는 데 사용됩니다. 이 세 가지 메소드를 호출해도 Context 그리기의 시작점에는 영향을 미치지 않습니다.

캔버스의 모든 내용을 지우고 싶을 때, 동일한 직사각형 경로를 그리는 경로 메소드를 사용하는 대신 context.clearRect(0, 0, width, height)를 직접 호출하여 직접 지울 수 있습니다. Canvas로 크기를 지정한 다음 채우기 방법을 사용하십시오.

결론

Canvas의 경로 방식을 통해 Canvas를 사용하여 간단한 벡터 그래픽을 처리할 수 있으므로 크기 조정 시 왜곡되지 않습니다. 하지만 Canvas의 경로 방법은 그다지 강력하지 않으며, 적어도 타원형 경로조차 없습니다...

참고자료 1.
캔버스 요소, WHATWG

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
H5 코드 해체 : 태그, 요소 및 속성H5 코드 해체 : 태그, 요소 및 속성Apr 18, 2025 am 12:06 AM

HTML5 코드는 태그, 요소 및 속성으로 구성됩니다. 1. 태그는 컨텐츠 유형을 정의하고 다음과 같은 각도 브래킷으로 둘러싸여 있습니다. 2. 요소는 컨텐츠와 같은 시작 태그, 내용 및 엔드 태그로 구성됩니다. 3. 속성 시작 태그에서 키 값 쌍을 정의하고 기능을 향상시킵니다. 웹 구조를 구축하기위한 기본 단위입니다.

H5 코드 이해 : HTML5의 기본 사항H5 코드 이해 : HTML5의 기본 사항Apr 17, 2025 am 12:08 AM

HTML5는 현대적인 웹 페이지를 구축하는 핵심 기술로 많은 새로운 요소와 기능을 제공합니다. 1. HTML5는 웹 페이지 구조 및 SEO를 향상시키는 의미 론적 요소를 소개합니다. 2. 멀티미디어 요소를 지원하고 플러그인없이 미디어를 포함시킵니다. 3. 양식은 새로운 입력 유형 및 검증 속성을 향상시켜 검증 프로세스를 단순화합니다. 4. 웹 페이지 성능 및 사용자 경험을 향상시키기 위해 오프라인 및 로컬 스토리지 기능을 제공합니다.

H5 코드 : 웹 개발자를위한 모범 사례H5 코드 : 웹 개발자를위한 모범 사례Apr 16, 2025 am 12:14 AM

H5 코드에 대한 모범 사례는 다음과 같습니다. 1. 올바른 문서 선언 및 문자 인코딩 사용; 2. 시맨틱 태그를 사용하십시오. 3. HTTP 요청을 줄입니다. 4. 비동기 부하 사용; 5. 이미지 최적화. 이러한 관행은 웹 페이지의 효율성, 유지 관리 및 사용자 경험을 향상시킬 수 있습니다.

H5 : 웹 표준 및 기술의 발전H5 : 웹 표준 및 기술의 발전Apr 15, 2025 am 12:12 AM

웹 표준과 기술은 현재까지 HTML4, CSS2 및 간단한 JavaScript에서 발전했으며 중대한 개발을 거쳤습니다. 1) HTML5는 캔버스 및 웹 스토리지와 같은 API를 도입하여 웹 응용 프로그램의 복잡성과 상호 작용을 향상시킵니다. 2) CSS3은 애니메이션 및 전환 기능을 추가하여 페이지를보다 효과적으로 만듭니다. 3) JavaScript는 화살표 기능 및 클래스와 같은 Node.js 및 ES6의 최신 구문을 통해 개발 효율 및 코드 가독성을 향상시킵니다. 이러한 변경으로 인해 웹 애플리케이션의 성능 최적화 및 모범 사례의 개발이 촉진되었습니다.

H5는 HTML5의 속기입니까? 세부 사항을 탐색합니다H5는 HTML5의 속기입니까? 세부 사항을 탐색합니다Apr 14, 2025 am 12:05 AM

H5는 HTML5의 약어 일뿐 만 아니라 더 넓은 현대 웹 개발 기술 생태계를 나타냅니다. 1. H5는 HTML5, CSS3, JavaScript 및 관련 API 및 기술을 포함합니다. 2. 그것은 더 풍부하고 대화식이며 부드러운 사용자 경험을 제공하며 여러 장치에서 원활하게 실행할 수 있습니다. 3. H5 기술 스택을 사용하여 반응 형 웹 페이지와 복잡한 대화식 기능을 만들 수 있습니다.

H5 및 HTML5 : 웹 개발에 일반적으로 사용되는 용어H5 및 HTML5 : 웹 개발에 일반적으로 사용되는 용어Apr 13, 2025 am 12:01 AM

H5 및 HTML5는 동일한 것을, 즉 html5를 나타냅니다. HTML5는 HTML의 다섯 번째 버전으로 시맨틱 태그, 멀티미디어 지원, 캔버스 및 그래픽, 오프라인 스토리지 및 로컬 스토리지와 같은 새로운 기능을 제공하여 웹 페이지의 표현성 및 상호 작용성을 향상시킵니다.

H5는 무엇을 언급합니까? 맥락 탐색H5는 무엇을 언급합니까? 맥락 탐색Apr 12, 2025 am 12:03 AM

h5referstohtml5, apivotaltechnologyinwebdevelopment.1) html5introducesnewelements 및 dynamicwebapplications.2) itsupp ortsmultimediawithoutplugins, enovannangeserexperienceacrossdevices.3) SemanticLementsImproveContentsTructUreAndSeo.4) H5'Srespo

H5 : 도구, 프레임 워크 및 모범 사례H5 : 도구, 프레임 워크 및 모범 사례Apr 11, 2025 am 12:11 AM

H5 개발에서 마스터 해야하는 도구 및 프레임 워크에는 vue.js, React 및 Webpack이 포함됩니다. 1.vue.js는 사용자 인터페이스를 구축하고 구성 요소 개발을 지원하는 데 적합합니다. 2. 복잡한 응용 프로그램에 적합한 가상 DOM을 통해 페이지 렌더링을 최적화합니다. 3. Webpack은 모듈 포장에 사용되며 리소스로드를 최적화합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

뜨거운 도구

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.