全国服务热线:4008-888-888

技术知识

HTML5 canvas基础制图之绘图曲线图

<canvas></canvas>是HTML5中新增的标识,用于绘图图型,具体上,这个标识和别的的标识1样,其独特的地方在于该标识能够获得1个CanvasRenderingContext2D目标,大家能够根据JavaScript脚本制作来操纵该目标开展制图。

<canvas></canvas>只是1个绘图图型的器皿,除id、class、style等特性外,也有height和width特性。在<canvas>>元素上制图关键有3步:

1.获得<canvas>元素对应的DOM目标,这是1个Canvas目标;
2.启用Canvas目标的getContext()方式,获得1个CanvasRenderingContext2D目标;
3.启用CanvasRenderingContext2D目标开展制图。

绘图曲线图

跟绘图曲线图的有4个涵数,各自是:

•context.arc(x,y,r,sAngle,eAngle,counterclockwise);用于建立弧/曲线图(用于建立圆或一部分圆)。接受的主要参数含意:
| 主要参数 | 含意 |
| :————- |:————-|
| x | 圆的管理中心的 x 座标 |
|y|圆的管理中心的 y 座标|
|r|圆的半径|
|sAngle|起止角,以弧度计(弧的圆形的3点钟部位是 0 度)|
|eAngle|完毕角,以弧度计|
|counterclockwise|可选。要求应当逆时针還是顺时针制图。False = 顺时针,true = 逆时针|

下面是几个arc()涵数的几个示例: 

JavaScript Code拷贝內容到剪贴板
  1. var canvas = document.getElementById("canvas");   
  2. var context = canvas.getContext("2d");   
  3.   
  4. context.strokeStyle = "#F22D0D";   
  5. context.lineWidth = "2";   
  6. //绘图圆   
  7. context.beginPath();   
  8. context.arc(100,100,40,0,2*Math.PI);   
  9. context.stroke();   
  10.   
  11. //绘图半圆   
  12. context.beginPath();   
  13. context.arc(200,100,40,0,Math.PI);   
  14. context.stroke();   
  15.   
  16. //绘图半圆,逆时针   
  17. context.beginPath();   
  18. context.arc(300,100,40,0,Math.PI,true);   
  19. context.stroke();   
  20.   
  21. //绘图封闭式半圆   
  22. context.beginPath();   
  23. context.arc(400,100,40,0,Math.PI);   
  24. context.closePath();   
  25. context.stroke();   

实际效果以下:

•context.arcTo(x1,y1,x2,y2,r); 在画布上建立介于两个切线之间的弧/曲线图。接受的主要参数含意:

这里必须留意的是arcTo涵数绘图的曲线图的起止点必须根据moveTo()涵数来设定,下面运用arcTo涵数绘图1个圆角矩形框: 

JavaScript Code拷贝內容到剪贴板
  1. function createRoundRect(context , x1 , y1 , width , height , radius)   
  2.     {   
  3.         // 挪动到左上角   
  4.         context.moveTo(x1 + radius , y1);   
  5.         // 加上1条联接到右上角的直线   
  6.         context.lineTo(x1 + width - radius, y1);   
  7.         // 加上1段圆弧   
  8.         context.arcTo(x1 + width , y1, x1 + width, y1 + radius, radius);   
  9.         // 加上1条联接到右下角的直线   
  10.         context.lineTo(x1 + width, y1 + height - radius);   
  11.         // 加上1段圆弧   
  12.         context.arcTo(x1 + width, y1 + height , x1 + width - radius, y1 + height , radius);   
  13.         // 加上1条联接到左下角的直线   
  14.         context.lineTo(x1 + radius, y1 + height);    
  15.         // 加上1段圆弧   
  16.         context.arcTo(x1, y1 + height , x1 , y1 + height - radius , radius);   
  17.         // 加上1条联接到左上角的直线   
  18.         context.lineTo(x1 , y1 + radius);   
  19.         // 加上1段圆弧   
  20.         context.arcTo(x1 , y1 , x1 + radius , y1 , radius);   
  21.         context.closePath();   
  22.     }   
  23.     // 获得canvas元素对应的DOM目标   
  24.     var canvas = document.getElementById('mc');   
  25.     // 获得在canvas上制图的CanvasRenderingContext2D目标   
  26.     var context = canvas.getContext('2d');   
  27.     context.lineWidth = 3;   
  28.     context.strokeStyle = "#F9230B";   
  29.     createRoundRect(context , 30 , 30 , 400 , 200 , 50);   
  30.     context.stroke();   
  31.   

实际效果以下:

•context.quadraticCurveTo(cpx,cpy,x,y);绘图2次贝塞曲线图,主要参数含意以下:

曲线图的刚开始点是当今相对路径中最终1个点。假如相对路径不存在,那末请应用 beginPath() 和 moveTo() 方式来界定刚开始点。

 •context.bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y); 绘图3次贝塞尔曲线图,主要参数以下:

以上便是本文的所有內容,期待对大伙儿的学习培训有一定的协助,也期待大伙儿多多适用脚本制作之家。



在线客服

关闭

客户服务热线
4008-888-888


点击这里给我发消息 在线客服

点击这里给我发消息 在线客服