位置: IT常识 - 正文

一篇canvas带你画出整个特效世界(canvas画线条)

编辑:rootadmin
一篇canvas带你画出整个特效世界

推荐整理分享一篇canvas带你画出整个特效世界(canvas画线条),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:canvas画一条线,canvas画线条,canvas怎么画图,绘制canvas,canvas怎么画图,canvas怎么画图,canvas怎么画,canvas怎么画,内容如对您有帮助,希望把文章链接给更多的朋友!

目录

一,canvas是啥?

1.初识canvas

2.路径绘制

3.拆分画法

4.清除画布 

5.绘制圆形笑脸

6.贝塞尔曲线

①二次贝塞尔曲线

②三次贝塞尔曲线

一,canvas是啥?

Canvas是HTML5中新出的一个元素,我们可以在上面绘制一系列图形。Canvas 在HTML文件中的写法很简单: <canvasid="canvas" width="宽度" height="高度"></canvas>,三个重要的属性,id,高度,宽度(这里就是指的你要在多宽多高的画布上来进行操作),canvas翻译过来就是画布的意思,所以我们也可以称他为画布

1.初识canvas

既然有画布了,那就得有画笔,所以我们的操作步骤为,创建画布,拿到该画布的元素,然后再拿起画笔,这里我们先画一个小矩形来看一下小效果,使用的是fillRect,参数分别为(x,y,w,h)这第一对参数啊就是坐标点,在哪一个坐标点开始画,第二对参数就是你画的东西多大,如果参数分别为(0,0,100,100)就是从远点开始,画一个宽高为100 的正方形

<body> <canvas id="c1" width="600" height="400"></canvas> <script> // 1.找到画布 var c1 = document.querySelector('#c1'); // 2.获取画笔 var ctx = c1.getContext('2d'); // 3.绘制图形 画一个矩形fillRect(位置x,位置y,宽度,高度) ctx.fillRect(400,100,100,100) </script></body>2.路径绘制

路径顾名思义就是只把该图形的路径画出来,也就是不进行内部填充,只进行边框的绘制,这里使用的是strokeRect 他的参数和fillRect的参数一样

一篇canvas带你画出整个特效世界(canvas画线条)

<body> <canvas id="c1" width="600" height="400">该浏览器不支持canvas</canvas> <script> var c1 = document.querySelector('#c1'); var ctx = c1.getContext('2d'); // 路径绘制矩形 ctx.strokeRect(100,100,100,100) </script></body>3.拆分画法

步骤为: beginPath开始绘制,rect绘制图形,绘制方式(fill、stroke)closePath绘制结束

<body> <canvas id="c1" width="600" height="400">该浏览器不支持canvas</canvas> <script> var c1 = document.querySelector('#c1'); var ctx = c1.getContext('2d'); // 拆分路径绘制矩形 // 这里要使用beginPath,closePath ctx.beginPath();// 开始绘画 ctx.rect(100, 100, 200, 100); ctx.stroke(); ctx.closePath();// 绘画结束 // 拆分填充绘制矩形 ctx.beginPath(); ctx.rect(200, 150, 200, 100); ctx.fill(); ctx.closePath(); </script></body>

绘制效果 

4.清除画布 

甲:画完了之后,我感觉效果并不是很好,我不想要的我想重新绘制,该咋办呢?

乙:这还不简单啊,直接选中del不就好啦

山鱼:简单粗暴(๑•̀ㅂ•́)و✧,但是呢这里有个比较文雅的方式使用clearRect,清除画布

不仅可以清除画布,配合定时器还能实现动态效果呢,ok先来看一下clearRect里面的参数,仨,分别是(x,y,清除谁,清除多少),这里是从整个画布的远点开始清除,清除c1这个画布的高度,每次清除高度++,开启一个定时器就能获得动态清除的效果啦

<body> <canvas id="c1" width="600" height="400">该浏览器不支持canvas</canvas> <script> var c1 = document.querySelector('#c1'); var ctx = c1.getContext('2d'); // 路径绘制矩形 ctx.strokeRect(100, 100, 200, 100); ctx.fillRect(200, 150, 200, 100); // 逐渐的清除绘制的内容 let height = 0; let t1= setInterval(() => { height++; ctx.clearRect(0, 0, c1.clientHeight,height); if(height >c1.clientHeight){ clearInterval(t1); } },10) </script></body>

清除效果

5.绘制圆形笑脸

方块可以绘制那么圆形也肯定能绘制,接下来就进行圆形笑脸的绘制 ,先来绘制一个圆弧,使用的是arc这个参数为六个(x,y,半径,起始角度,结束角度,顺/逆时针【默认的是顺时针】)经过绘制就能得到一个⚪,一个圆为360度也就是2π所以结束的度数为Math.PI*2

<canvas id="c1" width="600" height="400"></canvas> <script> var c1 = document.querySelector('#c1'); var ctx = c1.getContext('2d'); // 使用arc()绘制圆形他有6个参数分别为 // 圆心x,圆心y,半径,起始角度,结束角度,顺/逆时针(默认为顺时针) // false是顺时针true是逆时针 ctx.arc(300, 200, 50, 0, Math.PI*2,false); ctx.stroke(); </script>

 

开始绘制笑脸,这里使用的是moveTo和arc来共同完成的,moveTo() 方法把路径移动到画布中的指定点,不创建线条。绘制步骤为:创建画布,获取画布,获取画笔,开始绘制,绘制脸部

<body> <canvas id="c1" width="600" height="400"></canvas> <script> var c1 = document.querySelector('#c1'); var ctx = c1.getContext('2d'); // 使用arc()绘制圆形他有6个参数分别为 // 圆心x,圆心y,半径,起始角度,结束角度,顺/逆时针(默认为顺时针) // false是顺时针true是逆时针 // 1.绘制脸部 ctx.beginPath(); ctx.arc(75,75,50,0,Math.PI*2); ctx.moveTo(110,75); // 2.绘制嘴巴 ctx.arc(75,75,35,0,Math.PI); ctx.moveTo(65,65); // 3.绘制眼睛 // 左眼 ctx.arc(60,65,5,0,Math.PI*2) ctx.moveTo(95,65); // 右眼 ctx.arc(90,65,5,0,Math.PI*2); ctx.stroke(); ctx.closePath(); </script></body>

 

6.贝塞尔曲线①二次贝塞尔曲线

使用二次贝塞尔曲线画一个气泡框

二次曲线:quadraticCurveTo (cp1x, cp1y, x, y) 贝塞尔曲线:bezierCurveTo (cp1x, cp1y, cp2x, cp2y, x, y) 画圆弧:arcTo (x1,y1,x2,y2,radius);

<body> <canvas id="c1" width="600" height="400"></canvas> <script> var c1 = document.querySelector('#c1'); var ctx = c1.getContext('2d'); ctx.beginPath(); ctx.moveTo(200,300); ctx.quadraticCurveTo(150,300,150,200); ctx.quadraticCurveTo(150,100,300,100); ctx.quadraticCurveTo(450,100,450,200); ctx.quadraticCurveTo(450,300,250,300); ctx.quadraticCurveTo(250,350,150,350); ctx.quadraticCurveTo(200,350,200,300); ctx.stroke(); ctx.closePath(); </script></body>

 

②三次贝塞尔曲线

使用三次贝塞尔曲线画一个小爱心

<body> <canvas id="c1" width="600" height="400"></canvas> <script> var c1 = document.querySelector('#c1'); var ctx = c1.getContext('2d'); ctx.beginPath(); // 起初点 ctx.moveTo(300,200); // 两个控制点 ctx.bezierCurveTo(350,150,400,200,300,300); ctx.bezierCurveTo(200,200,250,150,300,200); ctx.stroke(); ctx.closePath(); </script></body>

我是Aic山鱼,感谢您的支持 ​原 创 不 易 ✨还希望支持一下 点赞👍:您的赞赏是我前进的动力! 收藏⭐:您的支持我是创作的源泉! 评论✍:您的建议是我改进的良药! 山鱼🦈社区:山鱼社区💌💌

本文链接地址:https://www.jiuchutong.com/zhishi/297888.html 转载请保留说明!

上一篇:【Leetcode】设计循环队列("设计")

下一篇:Google Chrome装到D盘的方法(chrome os安装到u盘)

  • 水上游乐设备厂家生产什么产品

    水上游乐设备厂家生产什么产品

  • 华为自带智能遥控app去哪里下载(华为自带智能遥控器下载)

    华为自带智能遥控app去哪里下载(华为自带智能遥控器下载)

  • 索尼xm4怎么进入配对模式(索尼xm4怎么使用)

    索尼xm4怎么进入配对模式(索尼xm4怎么使用)

  • 联想笔记本电脑亮度调节失灵怎么办(联想笔记本电脑黑屏打不开怎么办)

    联想笔记本电脑亮度调节失灵怎么办(联想笔记本电脑黑屏打不开怎么办)

  • 手机qq如何拉黑好友让对方没法加呢(手机qq如何拉黑对方不接受验证消息)

    手机qq如何拉黑好友让对方没法加呢(手机qq如何拉黑对方不接受验证消息)

  • 拼多多资金保护中多久解除(拼多多资金保护中是什么意思)

    拼多多资金保护中多久解除(拼多多资金保护中是什么意思)

  • 微信无法扫码(微信无法扫码支付怎么回事)

    微信无法扫码(微信无法扫码支付怎么回事)

  • 无线网络拒绝接入是什么意思(无线网wifi)

    无线网络拒绝接入是什么意思(无线网wifi)

  • 微信先拉黑再删除和直接删除的区别(微信先拉黑再删除对方怎么显示)

    微信先拉黑再删除和直接删除的区别(微信先拉黑再删除对方怎么显示)

  • 华为超级快充多久充满(华为超级快充多少瓦)

    华为超级快充多久充满(华为超级快充多少瓦)

  • 哈罗出行可以用微信充值么(哈罗出行可以用百度地图吗)

    哈罗出行可以用微信充值么(哈罗出行可以用百度地图吗)

  • 魅族手机忘记密码怎么办被锁定了(魅族手机忘记密码能刷机吗)

    魅族手机忘记密码怎么办被锁定了(魅族手机忘记密码能刷机吗)

  • 脉冲修复电池要多久啊(电池脉冲修复充电器有用吗)

    脉冲修复电池要多久啊(电池脉冲修复充电器有用吗)

  • 电子计算机用什么来表示与存储数据(电子计算机什么牌子质量好)

    电子计算机用什么来表示与存储数据(电子计算机什么牌子质量好)

  • 知乎账号存在异常行为被限制使用怎么解决(知乎账号存在异常行为)

    知乎账号存在异常行为被限制使用怎么解决(知乎账号存在异常行为)

  • log上传限制是什么意思(logs)

    log上传限制是什么意思(logs)

  • 移动iphone6可用电信卡吗(移动版iphone6可以用联通卡吗)

    移动iphone6可用电信卡吗(移动版iphone6可以用联通卡吗)

  • 手机文字怎么设置带拼音的(手机文字怎么设置)

    手机文字怎么设置带拼音的(手机文字怎么设置)

  • 苹果云盘关掉照片会没有吗(苹果云盘关掉照片怎么关)

    苹果云盘关掉照片会没有吗(苹果云盘关掉照片怎么关)

  • 电脑怎么联网本地连接(怎么电脑怎么联网)

    电脑怎么联网本地连接(怎么电脑怎么联网)

  • 小米5是lcd屏幕么(小米5lcd屏幕哪里生产的)

    小米5是lcd屏幕么(小米5lcd屏幕哪里生产的)

  • 苹果手机通话声音小怎么调(苹果手机通话声音小怎么调大声)

    苹果手机通话声音小怎么调(苹果手机通话声音小怎么调大声)

  • 3dtachi是什么(3d-tlc)

    3dtachi是什么(3d-tlc)

  • 学信网身份证号码重复怎么办(学信网身份证号码x怎么输入)

    学信网身份证号码重复怎么办(学信网身份证号码x怎么输入)

  • 快手怎么申请跟主播连麦(怎么才能和快手官方合作)

    快手怎么申请跟主播连麦(怎么才能和快手官方合作)

  • 苹果手机怎么设置黑屏时间(苹果手机怎么设置门禁卡NFC)

    苹果手机怎么设置黑屏时间(苹果手机怎么设置门禁卡NFC)

  • 攀牙湾安达曼海的红树林,泰国 (© Ratnakorn Piyasirisorost/Getty Images)(缅甸安达曼海)

    攀牙湾安达曼海的红树林,泰国 (© Ratnakorn Piyasirisorost/Getty Images)(缅甸安达曼海)

  • mysql临键锁的使用(mysql 临键锁)

    mysql临键锁的使用(mysql 临键锁)

  • 计提税费会计分录怎么填
  • 个体工商户定期定额征收个人所得税
  • 研发费用加计扣除是什么意思啊
  • 库存商品结转成本摘要怎么写
  • 未开票收入次月如何申报增值税
  • 资产管理公司的使命
  • 基金会对外捐赠未收到发票怎么入账
  • 贸易公司的印花税税率是多少
  • 预付装修费的会计分录
  • 普通增值税发票是否可以抵扣?
  • 房地产行业增值税筹划
  • 电商支付的刷单费怎样做记账凭证?
  • 租赁的设备伤人了谁的责任
  • 纳税人取得不动产进项税额怎么抵扣
  • 个人借款无法收回确认坏账账务处理
  • 农副产品收购发票申请
  • 收据能不能做账
  • 小规模纳税人水利建设基金计税依据是什么
  • 个人买卖二手房增值税
  • 上个月开的发票退回怎么处理?
  • 子公司评估增值 出售股权
  • 自建自用建筑物,其自建行为不是建筑业税目的征税范围
  • 代账代税与自行核算申报应从哪几个角度考虑
  • 以前年度损益调整编码
  • 独立核算的分公司可以享受小微企业吗
  • 车辆购置税计入固定资产一起折旧吗
  • macbook上安装windows10
  • 农业合作社零申报流程
  • 出租房子收入计入什么科目
  • 个税申报晚了会退税费吗
  • mac开机按command+r没反应
  • 10款手机赚钱软件下载
  • php封装api
  • 公司法人向公司借款未还,公司可以倒闭吗
  • 骑自行车的好处功效与作用
  • 报销是可以直接拿钱的吧
  • 超分模型
  • 礼的部首是什么部
  • 威尼斯海滩滑板场
  • 申报个人所得税是按应发工资还是实发工资
  • WGAN(Wasserstein GAN)看这一篇就够啦,WGAN论文解读
  • 会计打印发票请求怎么写
  • 房地产企业季度所得税预缴扣除附加税吗
  • 不同情况不同处理的句子
  • 购进小汽车自用为什么可以抵扣进项税
  • 企业购买商铺会查征信吗
  • 增值税开票系统客服电话
  • 企业所得税汇算清缴扣除标准2023
  • 帮员工购买意外险怎么记到分录
  • 经营性现金净流量公式
  • 固定资产核销是资产损失吗
  • 一般纳税人商贸公司增值税税负率
  • 公司有美金账户如何做账
  • 日常生活中常见的气质类型包括
  • 企业实收资本的用途
  • 增值税抵扣可以完全抵扣吗
  • 出口货物开票怎么处理
  • sql时间类型转换
  • sql不重复数据个数
  • windows下mysql 5.7版本中修改编码为utf-8的方法步骤
  • win10怎么用ghost
  • Win7旗舰版系统安装
  • wan 微型端口
  • 进程spoolsv.exe
  • 苹果电脑怎么关掉已经打开的页面
  • win8.1无线网
  • windows8.1激活方法
  • win7怎么更改用户名和密码
  • win7系统怎么锁定屏幕
  • js原始值有哪些
  • shell 整数赋值
  • javascript 变量
  • nodejs微信公众号开发
  • unity获取手机型号
  • jquery去重复数组
  • 怎么在手机开数据那里看用了多少流量
  • 个体加油站税务怎么申报
  • 潍坊市滨海经济开发区属于哪里
  • 贵州省国家税务局电子税务局官网
  • 四川省人口数据资料
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设