您的位置:首页 > 其它

Canvas绘制图形

2017-01-01 13:32 507 查看
1.Canvas绘制一个蓝色的矩形

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>

</head>
<body>

<canvas id="myCanvas" width="300" height="200"></canvas>

<script type="text/javascript">
var canvas=document.getElementById('myCanvas');
var ctx=canvas.getContext('2d');
ctx.fillStyle='#000099';
ctx.fillRect(0,0,80,100);
</script>
</body>
</html>


显示


2.绘制基本的直线

①绘制直线

<body>
<canvas id="myCanvas"></canvas>

<script type="text/javascript">
var canvas=document.getElementById("myCanvas");  //获取Canvas对象
var ctx=canvas.getContext("2d");            //获取上下文对象
ctx.beginPath();                             //开始一个新的绘制路径
ctx.moveTo(10,10);                           //定义直线的起点坐标
ctx.lineTo(200,10);                          //定义直线的终点坐标
ctx.stroke();                                //沿着坐标点顺序的路径绘制直线
ctx.closePath();                             //关闭当前的绘制路径
</script>
</body>


显示:


② 绘制二次曲线:

是直线锥面的两腔被一平面所截而得的曲线。二次曲线由一个起点、一个终点和一个控制点决定,当控制点经过圆锥顶点时,曲线变成一个点、直线或者相交直线,当控制点不经过圆锥顶点时,曲线可能是圆、锥圆、双曲线或抛物线。

<body>

<canvas id="myCanvas">您的浏览器不支持canvas标签</canvas>

<script type="text/javascript">
var canvas=document.getElementById('myCanvas');
if(canvas && canvas.getContext){                //判断Canvas对象是否为空
var ctx = canvas.getContext("2d");            //获取Canvas对象上下文
ctx.beginPath();                                //开始一个新的绘制路径
ctx.moveTo(100,50);                            //定义直线的起点坐标为(100,50)
ctx.quadraticCurveTo(100,15,300,30);        //设置二次曲线坐标
ctx.stroke();                                    //绘制路径
}
</script>

</body>


判断Canvas对象是否为空:是因为有些浏览器对Canvas的支持不是很好,为了避免网页运行时出现错误,需要提前判断。

显示:


③绘制贝赛尔曲线

每一个顶点都有两个控制点,用于控制在该顶点两侧的曲线的弧度。它的一个起点、一个终点、两个控制点,共四个点决定一条曲线。是用Canvas的bezierCurveTo函数绘制贝赛尔函数

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>4.2.3.html</title>
</head>
<body>
<canvas id="myCanvas">您的浏览器不支持canvas标签</canvas>
<script type="text/javascript">
var canvas=document.getElementById('myCanvas');
if(canvas && canvas.getContext){                //判断Canvas对象是否为空
var ctx = canvas.getContext("2d");            //获取Canvas对象上下文
ctx.beginPath();                                //开始一个新的绘制路径
ctx.moveTo(50,200);                            //定义直线的起点坐标为(50,200)
ctx.bezierCurveTo(50,100,200,100,200,150);    //设置贝塞尔曲线坐标
ctx.stroke();                                    //绘制路径
}
</script>
</body>
</html>


显示:


④绘制圆弧

1 <!doctype html>
2 <html>
3 <head>
4 <meta charset="utf-8">
5 <title>4.2.4.html</title>
6 </head>
7 <body>
8
9 <canvas id="myCanvas">您的浏览器不支持canvas标签</canvas>
10
11 <script type="text/javascript">
12 var canvas=document.getElementById('myCanvas');
13
14 if(canvas && canvas.getContext){                //判断Canvas对象是否为空
15     var ctx = canvas.getContext("2d");            //获取Canvas对象上下文
16     ctx.beginPath();                                //开始一个新的绘制路径
17     ctx.arc(100,75,50,0,2*Math.PI*0.75);        //设置圆弧坐标
18     ctx.stroke();                                    //绘制路径
19 }
20 </script>
21 </body>
22 </html>


显示:


3.绘制简单形状

①绘制圆形

1 <!doctype html>
2 <html>
3 <head>
4 <meta charset="utf-8">
5 <title>4.3.1.html</title>
6 </head>
7 <body>
8
9 <canvas id="myCanvas">您的浏览器不支持canvas标签</canvas>
10
11 <script type="text/javascript">
12 var canvas=document.getElementById('myCanvas');
13 if(canvas && canvas.getContext){                //判断Canvas对象是否为空
14     var ctx = canvas.getContext("2d");            //获取Canvas对象上下文
15     ctx.beginPath();                                //开始一个新的绘制路径
16     ctx.arc(100,75,50,0,2*Math.PI);                //设置圆坐标
17     ctx.stroke();                                    //绘制路径
18 }
19 </script>
20 </body>
21 </html>


显示:


②绘制三角形

绘制三条直线,并设置三条直线的起点和终点相互连接

1 <!DOCTYPE html>
2 <html>
3 <head lang="en">
4     <meta charset="UTF-8">
5     <title></title>
6 </head>
7 <body>
8
9    <canvas id="myCanvas"></canvas>
10
11    <script type="text/javascript">
12        var canvas=document.getElementById('myCanvas');
13        if(canvas && canvas.getContext){          //判断Canvas对象是否为空
14            var ctx=canvas.getContext("2d");     //获取Canvas对象上下文
15            ctx.beginPath();                       //开始一个新的绘制路径
16            ctx.moveTo(0,10);                      //设置三角形的起点
17            ctx.lineTo(200,20);                    //设置三角形的第二个起点
18            ctx.lineTo(280,100);                   //设置三角形的第三个起点起点
19            ctx.closePath();                       //将三角形第三个点与起点连接
20            ctx.stroke();                          //绘制路径
21        }
22    </script>
23 </body>
24 </html>


显示:


③绘制圆角矩阵

将使用arcTo函数绘制圆角矩阵,arcTo(x1,x2,y1,y2,r):绘制介于两个切线之间的圆弧,坐标点(x1,y1)为圆弧的起点坐标,(x2,y2)为圆弧的终点坐标,r为圆弧的半径。

1 <body>
2
3     <canvas id="myCanvas"></canvas>
4
5     <script type="text/javascript">
6         var canvas=document.getElementById("myCanvas");
7         if(canvas && canvas.getContext){
8             var ctx=canvas.getContext("2d");
9             ctx.beginPath();
10             ctx.moveTo(10,10);            //在左上方开始
11             ctx.arcTo(100,10,100,20,10);  //绘制右上方圆角
12             ctx.arcTo(100,110,90,110,10); //绘制右下方圆角
13             ctx.arcTo( 0,110,0,100,10);    //绘制左下方圆角
14             ctx.arcTo( 0,10,10,10,10);    //绘制左上方圆角
15             ctx.stroke();
16         }
17     </script>
18 </body>


显示:


④绘制自定义图形

1 <body>
2
3 <canvas id="myCanvas"></canvas>
4
5 <script type="text/javascript">
6     var canvas=document.getElementById("myCanvas");
7     if(canvas && canvas.getContext){
8         var ctx=canvas.getContext("2d");
9         ctx.beginPath();
10         ctx.arc(75,75,50,0,Math.PI*2,true);            //在左上方开始
11         ctx.moveTo(110,75);
12         ctx.arc(75,75,35,0,Math.PI,false);            //在左上方开始
13         ctx.moveTo(65,65);
14         ctx.arc(60,65,5,0,Math.PI*2,true);            //在左上方开始
15         ctx.moveTo(95,65);
16         ctx.arc(90,65,5,0,Math.PI*2,true);            //在左上方开始
17
18         ctx.stroke();
19     }
20 </script>
21 </body>


笑脸:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: