• [ 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>
  • 相关阅读:
    什么是继承?
    程序员兄弟们,我们的基本素质怎么样?
    C#基础概念二十五问
    windows mobile 5.0 PocketPC模拟器上网的设置
    数据库设计中的14个技巧
    Microsoft SQL Server 2005 存储过程翻页
    在.Net如何制作自定义的快捷方式(转)
    ActiveSync 没有DMA端口问题的解决方法
    原型模式(Prototype Pattern)
    获取鼠标和键盘长时间不动的时间
  • 原文地址:https://www.cnblogs.com/mysearchblog/p/5768908.html
Copyright © 2020-2023  润新知