html5 canvas (三)
0)基本结构先写好
- <script></script>
- var myCanvas = document.getElementById("myCanvas");
- var context = myCanvas.getContext("2d");
-
- context.strokeStyle = "rgba(0,0,0,.2)"//可以使用css颜色字串(rgb,rgba,hsl,hsla)
- context.fillStyle = "#ff9966"//设置填充颜色//和上面一样
HSLA(e.g:“hsla(0,50%,50%,0)”)是css3中新增的,其中H代表色相(值在0~360之间),S和L分别代表饱和度和亮度(值在0%~100%之间)
2)画线方法
- context.moveTo(x0, y0);//画笔移到x0,y0处
- context.moveTo(x1, y1);//从x0,y0到x1,y1画条线
- context.moveTo(x2, y2);//从x1,y1到x2,y2画条线
- context.fill();//填充形状
- context.stroke();//画线
- context . beginPath() //清空子路径
- context . closePath() //闭合路径
closePath 方法在绘图上下文如果没有子路径时,什么也不做;否则,
它先把最后一个子路径标示为闭合,然后建立一个包含最后子路径的第一个
点的子路径,并加入到绘图上下文。有点拗口,其一般可以看为,假如最后
一个子路径,我们命名为 spN,假设 spN 有多个点,则用直线连接 spN 的最
后一个点和第一个点,然后关闭此路径和 moveTo 到第一个点。
下面利用上面的知识画一个三角形
- <script></script>
- var myCanvas = document.getElementById("myCanvas");
- var context = myCanvas.getContext("2d");
- context.fillStyle ='rgba(255,0,0,.3)';//填充颜色:红色,半透明
- context.strokeStyle ='hsl(120,50%,50%)';//线条颜色:绿色
- context.lineWidth = 13;//设置线宽
- context.beginPath();
- context.moveTo(200,100);
- context.lineTo(100,200);
- context.lineTo(300,200);
- context.closePath();//可以把这句注释掉再运行比较下不同
- context.stroke();//画线框
- context.fill();//填充颜色
-
每个上下文都包含一个绘图状态的堆,绘图状态包含下列内容:
当前的 transformation matrix.
当前的 clipping region
当前的属性值:fillStyle, font, globalAlpha,
globalCompositeOperation, lineCap, lineJoin,
lineWidth, miterLimit, shadowBlur, shadowColor,
shadowOffsetX, shadowOffsetY, strokeStyle, textAlign,
textBaseline
- context . restore() //弹出堆最上面保存的绘图状态
- context.save() //在绘图状态堆上保存当前绘图状态
- context.save() ;
- drawing codes…
- context.restore();
- context.translate(x, y) //移动 Canvas 的原点到x,y处
- context.rotate(angle) //按给定的弧度旋转,按顺时针旋转
下面利用变换画一个正N边型
- <script></script>
- var myCanvas = document.getElementById("myCanvas");
- var context = myCanvas.getContext("2d");
- function drawPath(x, y, n, r)
- {
- var i,ang;
- ang = Math.PI*2/n //旋转的角度
- context.save();//保存状态
- context.fillStyle ='rgba(255,0,0,.3)';//填充红色,半透明
- context.strokeStyle ='hsl(120,50%,50%)';//填充绿色
- context.lineWidth = 1;//设置线宽
- context.translate(x, y);//原点移到x,y处,即要画的多边形中心
- context.moveTo(0, -r);//据中心r距离处画点
- context.beginPath();
- for(i = 0;i
- {
- context.rotate(ang)//旋转
- context.lineTo(0, -r);//据中心r距离处连线
- }
- context.closePath();
- context.stroke();
- context.fill();
- context.restore();//返回原始状态
- }
- drawPath(100, 100, 5, 40)//在100,100处画一个半径为40的五边形
- drawPath(200, 100, 3, 40)//在200,100处画一个半径为40的三角形
- drawPath(300, 100, 7, 40)//在300,100处画一个半径为40的七边形
- drawPath(100, 200, 15, 40)//在100,200处画一个半径为40的十五边形
- drawPath(200, 200, 4, 40)//在100,200处画一个半径为40的四边形
-

핫 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에서 텍스트 이동 안내. 여기서는 Marquee 태그가 구문과 함께 작동하는 방식과 구현할 예제에 대해 소개합니다.

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

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

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