[ html canvas 绘制曲线三种方法 ] canvas绘图 绘制曲线三种方法属性实例演示

 1 <!DOCTYPE html>
 2 <html lang=‘zh-cn‘>
 3 <head>
 4 <title>Insert you title</title>
 5 <meta name=‘description‘ content=‘this is my page‘>
 6 <meta name=‘keywords‘ content=‘keyword1,keyword2,keyword3‘>
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 8 <link rel=‘stylesheet‘ type=‘text/css‘ href=‘./css/index.css‘ />
 9 <script type=‘text/javascript‘ src=‘./js/jquery-1.12.1.min.js‘></script>
10 <style type=‘text/css‘>
11 html,body,canvas {
12     margin: 0; padding: 0;
13 }
14
15 html {
16     background: #999;
17 }
18
19 #can {
20     background: #FFF; display: block; margin: 75px auto; border-radius: 2px;
21 }
22 </style>
23 <script type=‘text/javascript‘>
24     $( function(){
25         var oCan = $( ‘#can‘ ).get( 0 ).getContext( ‘2d‘ );
26         oCan.beginPath();
27         /*
28
29             绘制曲线(圆形曲线):
30             oCan.arcTo(x1,y1,x2,y2,r) W3C解释 : 在画布上创建介于两个切线之间的弧:     起点坐标 1, 终点坐标 2, 半径(调整半径可达到不同效果)
31             这里有几个问题需要解决:
32             一:
33                 为什么在不设置 oCan.moveTo(),只设置oCan.arcTo()的时候,是画不出来曲线的?
34             二:
35                 为什么我们在设置的坐标点的时候,看不懂他是怎么画出来这个圆呢?
36
37             绘制曲线二(弧形曲线):
38             oCan.quadraticCurveTo(); W3C 二次方曲线 (绘制一条二次贝塞尔曲线:)
39             定义和用法
40             quadraticCurveTo(dx,dy,x1,y1) 方法通过使用表示二次贝塞尔曲线的指定控制点,向当前路径添加一个点。 dx,dy :控制点 x1,y1 结束坐标
41             提示:二次贝塞尔曲线需要两个点。第一个点是用于二次贝塞尔计算中的控制点,第二个点是曲线的结束点。曲线的开始点是当前路径中最后一个点。如果路径不存在,
42             那么请使用 beginPath() 和 moveTo() 方法来定义开始点。
43
44             绘制曲线三(S型曲线):
45             定义和用法
46             bezierCurveTo(dx1,dy1,dx2,dy2,x1,y1) 方法通过使用表示三次贝塞尔曲线的指定控制点,向当前路径添加一个点。    dx,dy :控制点 x1,y1 结束坐标
47             提示:三次贝塞尔曲线需要三个点。前两个点是用于三次贝塞尔计算中的控制点,第三个点是曲线的结束点。曲线的开始点是当前路径中最后一个点。如果路径不存在,
48             那么请使用 beginPath() 和 moveTo() 方法来定义开始点。
49
51          */
52         /*
53
54         //    使用arcTo来创建曲线
55         oCan.moveTo( 250 , 250 ); //创建开始点
56         oCan.arcTo( 100 , 300 , 50 , 150 , 50 );
57         oCan.arc( 250 , 250 , 2 , 0 , 2 * Math.PI , true ); //    辅助
58         oCan.arc( 100 , 300 , 2 , 0 , 2 * Math.PI , true ); //    辅助
59         oCan.arc( 50 , 150 , 2 , 0 , 2 * Math.PI , true );     //    辅助
60         oCan.closePath();
61         oCan.stroke();
62
63          */
64
65         /*
66
67         //    使用quadraticCurveTo来创建曲线
68         oCan.moveTo( 250 , 250 ); /* 创建开始点
69         oCan.quadraticCurveTo( 100 , 300 , 50 , 150 );    // 画出的曲线大小和控制点有直接关系,可以调整控制点的坐标来进行查看(曲线就是两个切线之间的弧)
70         oCan.arc( 250 , 250 , 2 , 0 , 2 * Math.PI , true ); //    辅助
71         oCan.arc( 100 , 300 , 2 , 0 , 2 * Math.PI , true ); //    辅助
72         oCan.arc( 50 , 150 , 2 , 0 , 2 * Math.PI , true );     //    辅助
73         oCan.closePath();
74         oCan.stroke();
75
76          */
77
78         //    使用bezierCurveTo来创建曲线
79         oCan.moveTo( 250 , 250 ); //    创建开始点
80         oCan.bezierCurveTo( 150 , 300 , 450 , 350 , 50 , 500 );
81         oCan.arc( 250 , 250 , 2 , 0 , 2 * Math.PI , true ); //    辅助
82         oCan.arc( 150 , 300 , 2 , 0 , 2 * Math.PI , true ); //    辅助
83         oCan.arc( 450 , 350 , 2 , 0 , 2 * Math.PI , true ); //    辅助
84         oCan.arc( 50 , 500 , 2 , 0 , 2 * Math.PI , true ); //    辅助
85         oCan.stroke();
86         oCan.closePath();
87     } );
88 </script>
89 </head>
90 <body>
91     <canvas id=‘can‘ width=‘500‘ height=‘500‘>您的浏览器版本过低,请升级您的浏览器...</canvas>
92 </body>
93 </html>
时间: 2024-10-18 19:19:27

[ html canvas 绘制曲线三种方法 ] canvas绘图 绘制曲线三种方法属性实例演示的相关文章

[ html drawImage 绘制图片 ] canvas绘制图片 drawImage 属性实例演示

<!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title> <meta name='description' content='this is my page'> <meta name='keywords' content='keyword1,keyword2,keyword3'> <meta http-equiv="

[ html canvas save restore ] canvas绘图 save restore 属性实例演示

解析: 我们可以在做平移变换之前将当前canvas的状态进行保存,其实Canvas为 我们提供了图层(Layer)的支持,而这些Layer(图层)是按"栈结构"来进行管理的 当我们调用save()方法,会保存当前Canvas的状态然后作为一个Layer(图层),添加到Canvas栈中, 另外,这个Layer(图层)不是一个具体的类,就是一个概念性的东西而已! 而当我们调用restore()方法的时候,会恢复之前Canvas的状态,而此时Canvas的图层栈 会弹出栈顶的那个Layer,

[ html 绘图 translate ] canvas绘图属性translate 设置画布中心点属性实例演示

1 <!DOCTYPE html> 2 <html lang='zh-cn'> 3 <head> 4 <title>Insert you title</title> 5 <meta name='description' content='this is my page'> 6 <meta name='keywords' content='keyword1,keyword2,keyword3'> 7 <meta htt

[ html canvas 绘制文本 ] canvas绘图实现绘制文本 strokeText fillText方法及textAlign textBaseline font 属性实例演示

1 <!DOCTYPE html> 2 <html lang='zh-cn'> 3 <head> 4 <title>Insert you title</title> 5 <meta name='description' content='this is my page'> 6 <meta name='keywords' content='keyword1,keyword2,keyword3'> 7 <meta htt

[ html drawImage 绘制图片 ] canvas绘制图片 drawImage 属性实例演示之二

1 <!DOCTYPE html> 2 <html lang='zh-cn'> 3 <head> 4 <title>Insert you title</title> 5 <meta name='description' content='this is my page'> 6 <meta name='keywords' content='keyword1,keyword2,keyword3'> 7 <meta htt

[ html drawImage 图片预加载 ] canvas绘制图片 drawImage 属性实例演示之三--使用New Image()进行图片预加载

1 <!DOCTYPE html> 2 <html lang='zh-cn'> 3 <head> 4 <title>Insert you title</title> 5 <meta name='description' content='this is my page'> 6 <meta name='keywords' content='keyword1,keyword2,keyword3'> 7 <meta htt

[ html 绘图 translate roteta ] canvas绘图属性translate 设置画布中心点 rotate 旋转属性实例演示

<!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title> <meta name='description' content='this is my page'> <meta name='keywords' content='keyword1,keyword2,keyword3'> <meta http-equiv="

html5 canvas绘图-贝塞尔曲线

贝塞尔曲线(ezier curve)最迟是由法国物理学家与数学家paul de Casteljau发明的.它的广泛运用则要归功于法国工程师皮埃尔 贝塞尔 贝塞尔曲线期初被用在汽车车身的设计上.现在则多用于计算机图形系统中.例如Adobe Illustrator/Apple的Cocoa框架以及在Html5的canvas. 贝塞尔曲线分为两种:平方(quadratic)贝塞尔曲线及立方(cubic)贝塞尔曲线.平方贝塞尔曲线是一种二次曲线(second degree curve),意思就是说,它们是

canvas 使用 isPointInPath() 判断鼠标位置是否在绘制的元素上

canvas 里绘制的图形不是一个实体 DOM,所以要给每个绘制的图形添加事件操作比给 DOM 添加事件要复杂很多. 所以,我们需要使用一个 canvas 的 isPointInPath(x, y) 方法,来获取鼠标相对于浏览器的坐标,然后还需要计算出鼠标相对于 canvas 画布的坐标,最后通过 isPointInPath(x, y) 方法判断此坐标是否在绘制的元素上,进行相应的操作. isPointInPath() 方法是针对的当前绘制的路径,而鼠标在执行操作的时候,我们会根据需要监听鼠标的