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

  • java entry(java entry数组)

    java entry(java entry数组)

  • 淘宝代付关闭了怎么开(淘宝代付 交易关闭)

    淘宝代付关闭了怎么开(淘宝代付 交易关闭)

  • 微信强提醒怎么设置(微信强提醒怎么没有了)

    微信强提醒怎么设置(微信强提醒怎么没有了)

  • NFC标签读卡器是什么(nfc标签读卡器作用)

    NFC标签读卡器是什么(nfc标签读卡器作用)

  • 华为mate30pro机身尺寸是多少(华为mate30pro机身尺寸长宽)

    华为mate30pro机身尺寸是多少(华为mate30pro机身尺寸长宽)

  • 华硕笔记本触控板可以手写吗(华硕笔记本触控板开关快捷键)

    华硕笔记本触控板可以手写吗(华硕笔记本触控板开关快捷键)

  • missingoperatingsystem开不了机(missingoperatingsystem装机u盘)

    missingoperatingsystem开不了机(missingoperatingsystem装机u盘)

  • 微信发过的朋友圈怎么编辑(微信发过的朋友圈怎么重新编辑)

    微信发过的朋友圈怎么编辑(微信发过的朋友圈怎么重新编辑)

  • 拼多多怎样截图给商家(拼多多怎样截图给客服)

    拼多多怎样截图给商家(拼多多怎样截图给客服)

  • 图片紧密型环绕怎么弄(图片紧密型环绕和嵌入型有何区别)

    图片紧密型环绕怎么弄(图片紧密型环绕和嵌入型有何区别)

  • 微信如何取消群代办(微信如何取消群折叠)

    微信如何取消群代办(微信如何取消群折叠)

  • iphone8用18w快充多久充满(iphone8p 18w快充)

    iphone8用18w快充多久充满(iphone8p 18w快充)

  • smart keyboard怎么用(smart keyboard怎么查序列号)

    smart keyboard怎么用(smart keyboard怎么查序列号)

  • 手机可以下电脑版微信吗(手机可以下电脑安装包吗)

    手机可以下电脑版微信吗(手机可以下电脑安装包吗)

  • 苹果型号a1443是苹果几(苹果手机型号a1431)

    苹果型号a1443是苹果几(苹果手机型号a1431)

  • 恢复出厂设置视频还在吗(恢复出厂设置视频还在不在)

    恢复出厂设置视频还在吗(恢复出厂设置视频还在不在)

  • 苹果x带无线充电器吗(苹果x无线充电怎么开启)

    苹果x带无线充电器吗(苹果x无线充电怎么开启)

  • 手机玩一会儿就很烫是什么原因(手机玩一会儿就很烫会不会爆炸)

    手机玩一会儿就很烫是什么原因(手机玩一会儿就很烫会不会爆炸)

  • win10底部任务栏无响应(win10底部任务栏透明)

    win10底部任务栏无响应(win10底部任务栏透明)

  • 华为p20有耳机孔吗(华为p20耳机孔坏了)

    华为p20有耳机孔吗(华为p20耳机孔坏了)

  • 华为note3的夜间模式在哪里开(华为nova3e夜间模式怎么关闭)

    华为note3的夜间模式在哪里开(华为nova3e夜间模式怎么关闭)

  • 文档间距怎么缩小(word文档间距缩小)

    文档间距怎么缩小(word文档间距缩小)

  • 打印机打印图片没反应(打印机打印图片怎么打)

    打印机打印图片没反应(打印机打印图片怎么打)

  • 电脑文件打不开怎么回事(电脑文件打不开了)

    电脑文件打不开怎么回事(电脑文件打不开了)

  • 应交税费账目处理
  • 企业持股分红
  • 将自产产品用于在建工程要交增值税
  • 民办非企业可以上市吗
  • 事业单位固定资产管理办法
  • 培训发生的差旅费怎么记账
  • 会计能开收据吗?
  • 合作社免税收入需要成本吗?
  • 工商局打印机读档案委托书
  • 专用发票二维码压线
  • 业务往来说明范本
  • 应收账款属于非流动资产吗
  • 出售全资子公司合并报表怎么做
  • 税控盘这个月没有反写会怎么样
  • 开出增值税普通发票需要交税吗
  • 核定征收的企业需要做账吗
  • 地税纳税人编码是什么
  • 房地产预收房款怎么开票
  • 当期所得税费用与递延所得税费用
  • 年终奖需要计入工资交社保吗
  • 资产负债表里面的应收账款包括哪些
  • 建筑中小企业
  • 停薪留职标准
  • windows更新出现错误重新打开设置
  • surface pro记笔记
  • mac系统安装出错
  • php初学者常见问题和答案
  • 当期损益都有啥
  • 其他应收款可以和其他应付款对冲吗
  • 金融行业如何征收营业税
  • 记账凭证填制的依据
  • 违约金赔偿款怎么开票
  • 以前年度应扣未扣支出专项申报表
  • 边角料是否计入生产成本
  • 递延所得税负债借贷方向
  • 女方结婚申请
  • vue.js.
  • vmware17虚拟机安装教程
  • 购物车html模板
  • javascript控制语句
  • 转出未交增值税怎么算
  • 日用品属于哪个类型
  • 工资可以当月计提当月发放怎么做账
  • 三十而已 1
  • python 字典中的字典
  • vuex 3
  • 酒店低值易耗品怎么摊销
  • python元数据
  • 银行对账单由谁负责
  • 车船税和保险在一张发票怎么做账
  • 全年一次性奖金税率表2023最新
  • 待处理财产损益是备抵类科目吗
  • 矿产资源补偿费计入管理费用吗
  • 平行结转法什么意思
  • 预计负债的账务处理
  • 增值税进项税额抵扣期限最新
  • 建筑工程老项目开票截止日期
  • 暂估的应付账款需要调整报表吗
  • 测绘费计入什么明细科目
  • 简易计税的进项税额转出会计分录
  • 电梯在固定资产里属于什么设备类别
  • windowsserver2016安装完成后怎么是命令模式
  • win8.1关机没反应
  • 将SP2整合进Office 2007的安装包中的方法
  • bios报警声
  • 定时清理注册表会怎么样
  • ubuntu 20.04.1 lts
  • Linux中如何查看文件大小
  • windows8装windows10,文件会丢失吗
  • win10的蓝屏界面
  • win7怎连蓝牙
  • quick-cocos2d-x如何在mac下编译安卓版本
  • 如何优化营商环境
  • windows2008 iis
  • android studio快捷键补全
  • unity的shader用法
  • HorizontalListView
  • 新加坡政治体制的介绍
  • 如何电子税务局缴纳社保费用
  • 中国的消费税是怎么算的
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设