首页 > 作文

html5 Canvas画图教程(8)—canvas里画曲线之bezierCurveTo方法

更新时间:2023-04-03 06:23:48 阅读: 评论:0

前面的文章我已经讲了3种在canvas中画曲线的方法:,arcto以及quadraticcurveto.他们都有一个共同点,就是他们画的曲线都只能偏向一边,今天讲的beziercurveto与他们最大的不同点就是有两个控制点,即可以画出s形的曲线了。

beziercurveto,也就是所谓的贝赛尔曲线了,如果你学过某些画图工具,就能马上理解。


beziercurveto的语法如下

ctx.beziercurveto(x1,y1,x2,y2,x,y);他的参数我照例解释一下,其中的(x1,y1)即控制点1的坐标,(x2,y2)是控制点2的坐标,(x,y)是他的终点坐标。和quadraticcurveto一样,他的起点坐标也是由moveto预先设置好的。

所以,beziercurveto画出一条曲线需要4个点:起点,终点,控制点1,控制点2.为了后续讲解,这里我假定控制点1对应起点,控制点2对应终点

这里又要提到canvas画图的老问题了,就是代码画图全部靠猜,画到哪里你要刷新下才能明了。

我还是延续前面的优良传统,画一些辅助线来帮助大家理解:

复制代码 代码如下:

var x1=450, //控制点1的x坐标

y1 = 300, //控制点1的y

x2 = 450, //控制点2的x

y2 = 500,//控制点2的y

x = 300, //终点x

y = 500;//终点y

ctx.moveto(300,300);//起点

ctx.beginpath();

ctx.linewidth = 5;

ctx.strokestyle = “rgba(0,0,0,1)”

ctx.moveto(300,300)时光荏苒的意思;

ctx.beziercurveto(x1,y1,x2,y2,x,y);

ctx.stroke();

//开始画辅助线

ctx.beginpath();

ctx.strokestyle = “rgba(255,0,0,0.5)”;

ctx.linewidth = 1;

// 连接起点和控制点1

ctx.moveto(300,300);

ctx.lineto(x1,y1);

// 连接终点和控制点2

ctx.moveto(x2,y2);

ctx.lineto(x,y);

// 连接起点与终点(基线)

ctx.moveto(300,300);

ctx.lineto(x,y);

ctx.stroke();

这里先画了一个类似quadraticcurveto的曲线,只偏向一边。这条线显得比较“圆润”,是因为控制点1与2的x坐标是小学生国旗下讲话相同的。

现在再画一个s形的曲线,证明beziercurveto是与众不同的:

复制代码 代码如下:

var x1 =英语笑话带翻译 150;

其实只要把控制点1的坐标变一下就行了。如果控制点1与控制点2的坐标分别处在基线的两边,则是画出s形的曲线;如果都在基线的某一边,则是类似于quadraticcur镇江景点veto的效果。

这个中药学专业主要学什么例子的情形比较简单,基线条(起点至终点)是竖直的,但实际应用中大部分时候我们的基线都是斜着的,那情况就复杂多了。不过大家自己试吧

每个画图的方法看起来功能都比较单一,但是,强大的方法是各个单一的方法组合出来的。后续的文章我试着讲解一些常规图形的画法,如圆角矩形,椭圆,他们就需要以前这些单一的方法结合起来。

本文发布于:2023-04-03 06:23:46,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/66cdb80c2dc0ee1952bf10af9cce1d7e.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:html5 Canvas画图教程(8)—canvas里画曲线之bezierCurveTo方法.doc

本文 PDF 下载地址:html5 Canvas画图教程(8)—canvas里画曲线之bezierCurveTo方法.pdf

标签:终点   坐标   基线   曲线
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图