Canvas——路径使用的一些感悟

路径使用的一些总结:

moveTo()lineTo()函数都是用来移动点,绘制路径的函数,绘制完成后,调用closePath()函数,它会创建一条由描点的终点通向起点的虚拟路径,闭合整个路径,然后调用stroke()函数进行描边,最后可以用fill()函数来填充样式。

简单的实例代码如下:

<!DOCTYPE HTML>  

<html>  

<head>

<meta charset="utf-8">

 

<!--函数 S-->

 

<script type="text/javascript">

function canFun(){

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

var context=canvas.getContext("2d"); 

 

<!--五角星路径 S-->  

context.moveTo(76,197);

context.lineTo(421,197);  

context.lineTo(143,399);  

context.lineTo(248,71);  

context.lineTo(356,399);  

context.lineTo(76,197);

<!--五角星路径 E-->

 

<!--中心区域渐变 S-->

var radGrad=context.createRadialGradient(200,190,2,250,250,1800);

radGrad.addColorStop(0.0,"white");

radGrad.addColorStop(0.05,"yellow");

context.fillStyle=radGrad;

<!--中心区域渐变 E-->

 

<!--描边和填充 S-->

context.closePath();

context.lineWidth = 8;

context.stroke();

context.fill();

<!--描边和填充 E-->

 

<!--保持位置居于浏览器中心 S-->

canvas.style.position="absolute";

canvas.style.top=(document.documentElement.clientHeight-500)/2+"px";

canvas.style.left=(document.documentElement.clientWidth-500)/2+"px";

<!--保持位置居于浏览器中心 E-->

 

}

window.onload=window.onresize=canFun;

</script>

 

<!--函数 E-->

 

</head>

<body>

<canvas width="500" height="500" >该浏览器不支持canvas.</canvas>

</body>  

</html>

效果如下面的图片:

附加:绘制五角星的不同姿势

function draw(id){

            var canvas = document.getElementById(id);

            var context = canvas.getContext(‘2d‘);

            context.fillStyle = "green";

            context.fillRect(0,0,150,150);

            var r = 40;

            context.translate(75,75);

            context.beginPath();

            context.fillStyle="yellow";

            context.moveTo(r,0);

            for(var i=0;i<9;i++){

                context.rotate(Math.PI/5);

                if(i%2 == 0) {

                context.lineTo((r/0.525731)*0.200811,0);

                } else {

                context.lineTo(r,0);

                }

            }

            context.closePath();

 

            context.fill();

            context.stroke();

        }  

 

        <canvas id="canvas" width="150" height="150"></canvas>

画出来的效果如下图:

这个画法不熟悉canvas操作的话,上来看可能会有点懵。(其实我也是看了一会才明白)

下面分解一下这种画法:

这样的:

(1)context.translate(75,75);将画布起点移动到了上面画的矩形的中心;

(2)context.moveTo(r,0);设置的是五角星的起点,就是第1个点;

(3)然后进入for循环,绘制剩下的9个点。每次绘制点前,都会调用context.rotate(Math.PI/5);函数,将画布以上面第一个步骤里移动后的点(就是矩形的中心)为中心,旋转PI/5;

然后就是两种情况了,偶数的时候,移动context.lineTo((r/0.525731)*0.200811,0);这个距离,例如i=0的时候,就是上面图上的第2个点;

奇数的时候,移动context.lineTo(r,0);这个距离,例如i=1的时候,就是上图的第3个点,这样画完9个点,加上起点,正好就是一个完整五角星的10个点了,关闭路径,绘制就出现图形了。

时间: 2024-11-14 13:27:43

Canvas——路径使用的一些感悟的相关文章

Canvas路径、描边、填充

<script> var context = document.getElementById('canvas').getContext('2d'); context.font = '48pt Helvetica'; context.strokeStyle = 'blue';//边框颜色 context.fillStyle = 'red';//填充颜色 context.lineWidth = '2'; //画文字 context.strokeText('边框', 60, 110); contex

canvas - 路径

ie 8 不支持 canvas 路径方法 * 12 1.fill 2.stroke 3.beginPath 4.moveTo 5.closePath 6.lineTo 7.clip  //相当于选区,可以在此之前,先save 然后之后再restore 8.quadraticCurveTo 9.bezierCurveTo 10.arc 11.arcTo 12.isPointInPath //其中绘制路径有 6 个 moveTo(x,y) lineTo(x,y) arc(x,y,radius,sta

Canvas路径方向

使用Canvas路径画图需要注意方向,画图方向是顺时针还是逆时针需要记住.下面让我们看看Canvas常见路径方向. arc 参数值 context.arc(x,y,r,sAngle,eAngle,counterclockwise); 参数 描述 x 圆的中心的 x 坐标. y 圆的中心的 y 坐标. r 圆的半径. sAngle 起始角,以弧度计.(弧的圆形的三点钟位置是 0 度). eAngle 结束角,以弧度计. counterclockwise 可选.规定应该逆时针还是顺时针绘图.Fals

HTML5中的Canvas路径

画图也就是我们拿着笔在一张白纸上画图片一样,区别在与这支笔变成了canvas了. 我们平时画图想到什么画什么,可以涂鸦随便怎么样,那么可以开始了. 画图需要白纸吧,于是:(一些基本的用法我就不介绍了) <canvas id="canvas" width="500" height="500"></canvas> 这个就是了.了.有了白纸就要有拿起笔吧,那么: var canvas=document.getElementByI

canvas路径剪切和判断是否在路径内

1.剪切路径 clip() var ctx=mycanvas.getContext('2d'); ctx.beginPath(); // 建一个矩形路径 ctx.moveTo(20,10) ctx.lineTo(100,10) ctx.lineTo(100,100) ctx.lineTo(20,100) ctx.closePath(); // 剪切 ctx.clip(); ctx.fillRect(0,0,50,50); 这句话的作用是,在这个画布上绘图时,只在clip()的这块路径区域内才st

html5 canvas路径绘制2

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

canvas入门-2路径、文字

1.canvas是一个二维网格坐标系 2.canvas路径 <script type="text/javascript">//绘制矩形 var oCanvas = document.getElementById('canvas-1'); var context = oCanvas.getContext('2d');//指向2d渲染环境的引用 context.moveTo(0,0); context.lineTo(0,100); context.lineTo(100,100)

canvas知识点

HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成.<canvas> 标签只是图形容器,您必须使用脚本来绘制图形.你可以通过多种方法使用Canva绘制路径,盒.圆.字符以及添加图像. 创建一个画布(Canvas)一个画布在网页中是一个矩形框,通过 <canvas> 元素来绘制.注意: 默认情况下 <canvas> 元素没有边框和内容.<canvas id="myCanvas" width

【转】五分钟学会 Canvas 基础(一)

原文:http://www.jianshu.com/p/d9ec1ef9c1e8 0.前言 最近忙里偷闲,来写的这篇文章,但是中午出去吃个饭,回来因为自己的误操作,把上午的文章全删除了,还没法找回. 小编真的是瞬间觉得整个人生都灰暗了. 心塞,这次真的不想多说什么了. -------------我是华丽的分割线-------------- 终于把这篇文章写完了,关于本文,针对读者主要是之前从未接触过 Canvas的同学.当然,你要学 canvas 一定要有 JS 基础啦. 其次就是,因为前前后后