贝塞尔曲线起始点和终止点在曲线上,方向控制点不再曲线上。二次贝塞尔曲线有一个控制点,三次贝塞尔曲线有两个控制点。

二次贝塞尔曲线

定义和用法
quadraticCurveTo() 方法通过使用表示二次贝塞尔曲线的指定控制点,向当前路径添加一个点。
二次贝塞尔曲线需要两个点。第一个点是用于二次贝塞尔计算中的控制点,第二个点是曲线的结束点。曲线的开始点是当前路径中最后一个点。如果路径不存在,那么使用 beginPath() 和 moveTo() 方法来定义开始点。

开始点:
moveTo(20,20)
控制点:
quadraticCurveTo(20,100,200,20)
结束点:
quadraticCurveTo(20,100,200,20)

参数 描述
cpx 贝塞尔控制点的x坐标
cpy 贝塞尔控制点的y坐标
x 结束点的x坐标
y 结束点的y坐标
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>初识贝塞尔曲线</title>
<style>#myc{display:block; margin :auto; border: 1px solid #777;}
</style>
</head><body>
<canvas id="myc" width="350" height="350" style="background-color:#CCC">您的浏览器不支持此功能</canvas><script>
var c=document.getElementById("myc");
var ctx=c.getContext("2d");
//x,y是起始点,w控制宽度,h控制高度
var x=20,y=250,w=255,h=200;ctx.beginPath();ctx.lineWidth=5;ctx.strokeStyle="#c00";//起始点ctx.moveTo(x,y);//传入控制方向点和结束点坐标参数ctx.quadraticCurveTo(x+w/2,y-h,x+w,y);ctx.stroke();ctx.beginPath();ctx.moveTo(x,y);ctx.lineWidth=2;ctx.strokeStyle="black";ctx.lineTo(x+w/2,y-h);ctx.stroke();ctx.font="16px arial";ctx.fillText("(x,y)",x,y);ctx.fillText("(x+w/2,y-h)",x+w/2,y-h);ctx.fillText("(x+w,y)",x+w,y);
</script>
</body>
</html>

使用二次贝塞尔曲线绘制笑脸

定义和用法
bezierCurveTo() 方法通过使用表示三次贝塞尔曲线的指定控制点,向当前路径添加一个点。

三次贝塞尔曲线需要三个点。前两个点是用于三次贝塞尔计算中的控制点,第三个点是曲线的结束点。曲线的开始点是当前路径中最后一个点。如果路径不存在,那么请使用 beginPath() 和 moveTo() 方法来定义开始点。

开始点:
moveTo(20,20)
控制点 1:
bezierCurveTo(20,100,200,100,200,20)
控制点 2:
bezierCurveTo(20,100,200,100,200,20)
结束点:
bezierCurveTo(20,100,200,100,200,20)

参数 描述
cp1x 第一个贝塞尔曲线控制点的x坐标
cp1y 第一个贝塞尔曲线控制点的y坐标
cp2x 第二个贝塞尔曲线控制点的x坐标
cp2x 第二个贝塞尔曲线控制点的y坐标
x 结束点的x坐标
y 结束点的y坐标
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>使用二次贝塞尔曲线绘制笑脸</title>
<style>#myc{ddisplay:block; margin :auto; background-color:#6FF}
</style>
</head><body>
<canvas id="myc" width="400" height="400">您的浏览器不支持此功能</canvas><script>
var c=document.getElementById("myc");
var ctx=c.getContext("2d");
//x,y是起始点,w控制宽度,h控制高度
var x=50,y=210,w=100,h=50;//第一只眼睛ctx.beginPath();ctx.moveTo(x,y);ctx.quadraticCurveTo(x+w/2,y-h,x+w,y);ctx.stroke();var x1=x+w+80;//第二只眼睛ctx.beginPath(x1,y);ctx.moveTo(x1,y);ctx.quadraticCurveTo(x1+w/2,y-h,x1+w,y);ctx.stroke();var x2=x+w/2+40,y2=y+100;//嘴巴ctx.beginPath();ctx.moveTo(x2,y2);ctx.quadraticCurveTo(x2+w/2,y2+h,x2+w,y2);ctx.stroke();//脸ctx.beginPath();ctx.arc(x2+w/2,y2-70,150,0,2*Math.PI);ctx.stroke();
</script>
</body>
</html>

使用三次贝塞尔曲线绘制流动的水波动画

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>使用三次贝塞尔曲线绘制流动的水波动画</title>
<style>#myc{ddisplay:block; margin :auto; background-color:#FFFFFF}
</style>
</head><body>
<canvas id="myc" width="400" height="400">您的浏览器不支持此功能</canvas><script>
var c=document.getElementById("myc");
var ctx=c.getContext("2d");
//x,y是起始点,w控制宽度,h控制高度
var x=0,y=210,w=200,h=50,dy=210;function wave(){//擦除ctx.clearRect(0,0,c.width,c.height);ctx.beginPath();ctx.moveTo(x,y);ctx.bezierCurveTo(x+w/2,y-h,x+1.5*w,y+h,x+2*w,y);var x1=x+w*2;ctx.bezierCurveTo(x1+w/2,y-h,x1+1.5*w,y+h,x1+2*w,y);ctx.stroke();//水域ctx.lineTo(x1+2*w,y+dy);ctx.lineTo(x,y+dy);ctx.closePath();//渐变色var cl=ctx.createLinearGradient(0,c.height,w+x,0);cl.addColorStop(0,"#6CF");cl.addColorStop(1,"#36C");ctx.fillStyle=cl;ctx.fill();x-=5;if(x<=-2*w){x=0;}//浏览器提供的与动画相关的回调函数requestAnimationFrame(wave);    }wave();
</script>
</body>
</html>

书小宅之网页设计——二次贝塞尔曲线和三次贝塞尔曲线相关推荐

  1. 书小宅之网页设计——用之有道

    网页标题title:title定义的标题仅是在浏览器标题栏中显示的信息.title作为属性用来定义提示文本. 网页内容的标题hi:一般一个网页应该只有一个一级标题(主标题),也就是说网页内容应该只用依 ...

  2. 书小宅之网页设计——标签

    HTML常用标签 文档结构标签 <html>--</html> :标识HTML文档的起始和终止. <head>--</head> :标识HTML文档的头 ...

  3. 书小宅之网页设计CSS3——圆角矩形

    圆角半径四个方向的参数都写时,对应的顺序是左上,右上,右下,左下. border-radius: 1-4 length|% / 1-4 length|%; 注释:按此顺序设置每个 radius 的四个 ...

  4. 书小宅之网页设计CSS3——多边形

    CSS3绘制三角形和梯形 div的边框属性 border-style 属性用于设置元素所有边框的样式,或者单独地为各边设置边框样式. 只有当这个值不是 none 时边框才可能出现. 1.border- ...

  5. 【HTML 中的二次贝塞尔曲线 和三次贝塞尔曲线】(使用说明详解)

    二次 贝塞尔曲线 和三次 贝塞尔曲线 使用说明 1. 二次 贝塞尔曲线 和三次 贝塞尔曲线 1.1 贝塞尔曲线的 基本知识 1.2 贝塞尔曲线 生成动图 1.3 HTML 中 画贝塞尔曲线的 2 种方 ...

  6. 二次贝塞尔曲线转换为三次贝塞尔曲线

    二次贝塞尔曲线转换为三次贝塞尔曲线 在使用cairo绘图的时候,发现cairo不支持二次贝塞尔曲线的绘制,为了与QT实现的canvas的行为一致,cairo必须同样实现二次贝塞尔曲线的绘制.思路是将二 ...

  7. canvas笔记-二次贝塞尔曲线与三次贝塞尔曲线的用法

    此博文不研究其算法,只记录下其用法. 首先是二次贝塞尔曲线! 函数是这样的 quadraticCurveTo(cpx, cpy, x, y); 其中cpx为贝塞尔控制点x: 其中cpy为贝塞尔控制点y ...

  8. 书小宅之概念汇总——胜读十年书

    计算机基础 世界上第一台电子计算机于1946年诞生于美国. 1945年,ENIAC 的顾问.美籍匈牙利数学家 冯·诺依曼 在为一台新的计算机EDVAC (EDVAC是电子离散变量计算机的缩写,是世界上 ...

  9. python大佬养成计划----HTML网页设计二

    文本标签 换行标签 -- br 是单标签,意味着它没有结束标签.起强制换行作用 段落中的文字<br>段落中的文字<br>段落中的文字<br> 水平分割线 -- hr ...

最新文章

  1. samtools 检测bam文件的完整度
  2. 这款库克寄予厚望的苹果产品,只活了2年
  3. 白话Elasticsearch22- 深度探秘搜索技术之match_phrase_prefix实现search-time搜索推荐
  4. BUUCTF——[ACTF新生赛2020]SoulLike——使用angr解
  5. hbase读写流程及缓存机制
  6. 三极管放大电路三种类型
  7. 提高国内访问GitHub速度的9种方案~
  8. ARP-Address Resolution Protocol-地址解析协议
  9. 二进制文件签名_二进制数的签名表示
  10. python脚本加密_教你如何基于python实现脚本加密
  11. php 数组 json字段去不全,json_encode – PHP给出了不完整的json字符串
  12. 【jQuery】学习整理(一) 认识jQuery
  13. c++重载、覆盖和隐藏
  14. 脉歌蓝牙耳机线评测_漂亮的高音质蓝牙耳机 脉歌MACAW TX-90评测
  15. 数据结构——树的概述
  16. Java中的Filter过滤器
  17. Mysql 分组求和
  18. 7、数据表添加字段(三种方式)
  19. Heartbeat介绍
  20. 怎样在计算机中找小键盘,笔记本怎么关小键盘【方法步骤】

热门文章

  1. 文本相似性处理(好比论文查重)
  2. 055.Javascript初探
  3. Spring事务通知tx:advice标签
  4. 微信小程序:点击图片进行预览
  5. Java 12 Shenandoah GC
  6. 统计一个字符串中大写字母,小写字母,以及数字的个数。
  7. 情人节程序员用HTML网页表白【爱心_文字音乐告白】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  8. MiniDao-PE精简版
  9. 鸿蒙一体机使用方法,教学一体机的使用方法
  10. IOS 使用TestFlight 详解