位置: 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盘)

  • 苹果xr相机如何设置镜像(苹果xr相机如何背景变透明)

    苹果xr相机如何设置镜像(苹果xr相机如何背景变透明)

  • 电脑版WPS修订模式在哪(wps修订模式在哪)

    电脑版WPS修订模式在哪(wps修订模式在哪)

  • 微信语音消息怎么转发给别人(微信语音消息怎么变成扬声器)

    微信语音消息怎么转发给别人(微信语音消息怎么变成扬声器)

  • pcam10什么意思(pc10是什么意思)

    pcam10什么意思(pc10是什么意思)

  • 闲鱼已hold还可以拍吗(闲鱼已售)

    闲鱼已hold还可以拍吗(闲鱼已售)

  • 手机防窥原理(手机防窥原理图)

    手机防窥原理(手机防窥原理图)

  • 快手闪回是什么意思(快手闪进闪出有什么影响)

    快手闪回是什么意思(快手闪进闪出有什么影响)

  • 苹果建议开省电模式吗(iphone开省电好吗)

    苹果建议开省电模式吗(iphone开省电好吗)

  • vivo手机进水了黑屏了怎么办(vivo手机进水了怎么处理比较好)

    vivo手机进水了黑屏了怎么办(vivo手机进水了怎么处理比较好)

  • 系统中断cpu100是什么原因(系统中断cpu占用100一闪而过)

    系统中断cpu100是什么原因(系统中断cpu占用100一闪而过)

  • 联想x220笔记本是哪一年出的(联想x220笔记本参数)

    联想x220笔记本是哪一年出的(联想x220笔记本参数)

  • pdf档是什么意思(pdf文档格式是啥意思)

    pdf档是什么意思(pdf文档格式是啥意思)

  • 什么是宽带识别码(什么是宽带识别网)

    什么是宽带识别码(什么是宽带识别网)

  • 微信解封一直提示收不到短信(微信解封一直提示失败)

    微信解封一直提示收不到短信(微信解封一直提示失败)

  • oppo手机摔黑屏怎么办(oppo手机摔黑屏怎么导出资料)

    oppo手机摔黑屏怎么办(oppo手机摔黑屏怎么导出资料)

  • Nova5Pro充电会越来越慢吗(华为nova5pro充电变慢了)

    Nova5Pro充电会越来越慢吗(华为nova5pro充电变慢了)

  • qq音乐怎么更改密码(qq音乐怎么设置密码)

    qq音乐怎么更改密码(qq音乐怎么设置密码)

  • mate10怎么设置闹钟铃声(华为mate10pro闹钟铃声怎么设置)

    mate10怎么设置闹钟铃声(华为mate10pro闹钟铃声怎么设置)

  • 库乐队打不开怎么回事(库乐队没反应怎么办)

    库乐队打不开怎么回事(库乐队没反应怎么办)

  • 手机振动怎么不振了(手机振动怎么不让别人听到)

    手机振动怎么不振了(手机振动怎么不让别人听到)

  • ios系统制作微视频用什么软件(苹果手机怎样制作微视)

    ios系统制作微视频用什么软件(苹果手机怎样制作微视)

  • 微信语音连接失败怎么回事(微信语音连接失败是拒绝吗)

    微信语音连接失败怎么回事(微信语音连接失败是拒绝吗)

  • ausvc.exe进程是安全的吗 ausvc进程信息查询(进程aissca.exe)

    ausvc.exe进程是安全的吗 ausvc进程信息查询(进程aissca.exe)

  • Win10应用程序显示错误异常代码0xc0000417怎么解决?(win10显示所有应用)

    Win10应用程序显示错误异常代码0xc0000417怎么解决?(win10显示所有应用)

  • B/S架构(b/s架构的正确解释方式)

    B/S架构(b/s架构的正确解释方式)

  • 个税手续费返还政策最新规定2023
  • 外轮供应公司远洋运输供应公司的退税申报?
  • 物流公司如何办理营运证
  • 工资个税计算公式2020
  • 递延所得税资产账务处理
  • 无税率的汽油卡是什么
  • 增值税普票没有税号可以开吗
  • 个体工商户开普票限额最新规定
  • 小规模纳税人企业所得税怎么计算
  • 部分产品退货怎么办
  • 代订餐如何赚钱
  • 企业所得税退抵税费申请(汇算清缴)怎么撤销
  • 金三财务报表如何更正
  • 进口消费税应该记到什么科目
  • 万元版和十万元版可以一起用吗
  • 预付账款收不到发票汇算清缴调整增吗
  • 房地产开发企业预收款预缴增值税
  • 印章刻字怎么收费
  • 盘亏存货需要进项税额转出吗
  • 物流公司加油费属于什么费用
  • 上海市购销合同印花税计税金额怎么算?
  • 企业缴纳房产税的依据
  • 预缴0.2%企业所得税计算方法
  • 个人租车所得交什么税
  • 停车费属于不动产租赁服务税率
  • 商票背书需要对方开发票吗
  • 预收销货款属于负债吗
  • 企业研发人员数量在哪里查
  • 认购价和发行价的差价
  • 酒店客房收入怎么算
  • 贷款损失准备如何提取
  • 退货应该怎么记账
  • 劳务公司开发票,劳务公司怎么转取收入
  • php变量设置
  • 微软window
  • 权益法核算的长期股权投资入账价值
  • linux怎么启动.sh文件
  • 股东帮企业还款违法吗
  • 水资源税收费标准
  • laravel insert ignore
  • 持有至到期投资减值准备
  • 把ChatGPT接入我的个人网站
  • php数据表
  • 营业税金及附加会计分录
  • 个人所得税经营所得税申报表A表
  • 股东分红缴税期限
  • 如何测试php
  • 增值税销项税红字应如何报税
  • 个人所得税税率怎么算
  • 广交会展务
  • 支付快递费怎么做账
  • 销售货物并提供安装服务是混合销售吗
  • 公司账户收入多少要扣税
  • 坏账准备确认坏账
  • 自产自销免税农产品需要缴纳印花税吗
  • 固定资产折旧从什么时候
  • 中标服务费计入合同取得成本
  • 一般纳税人的进项税额可以抵扣吗
  • 长期应付职工薪酬属于其他非流动负债吗
  • 转账支票有效期6个月
  • sqlserver 统计sql语句大全收藏
  • mysql 数据修改
  • fcitx输入法配置
  • 繁体系统安装简体软件
  • 创建一个windows
  • win8摄像头权限怎么设置
  • linux 文字处理
  • 如何修改windows默认语言
  • sentstrt.exe - sentstrt进程是什么文件 有什么用
  • 电脑如何将win10设置为win7
  • 微软宣布
  • window10 弹窗广告
  • win8桌面在c盘的路径
  • cocos-creator
  • nodejs 异步io底层原理
  • js判断路径下图片是否存在
  • javascript教程 csdn
  • python的例子
  • window运行怎么打开
  • 税务局直属机构
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设