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

  • 华硕笔记本不插电闪屏(华硕笔记本不插电源就黑屏)

    华硕笔记本不插电闪屏(华硕笔记本不插电源就黑屏)

  • 微软账户一直登录失败(微软账户一直登不进去)

    微软账户一直登录失败(微软账户一直登不进去)

  • 美图秀秀怎么做动漫照片(美图秀秀怎么做壁纸)

    美图秀秀怎么做动漫照片(美图秀秀怎么做壁纸)

  • 华为手机怎么换皮肤(华为手机怎么换键盘)

    华为手机怎么换皮肤(华为手机怎么换键盘)

  • vivoy9s怎么快捷截屏(vivos9e怎么设置快捷键)

    vivoy9s怎么快捷截屏(vivos9e怎么设置快捷键)

  • honor怎么隐藏应用(honor怎么隐藏应用程序)

    honor怎么隐藏应用(honor怎么隐藏应用程序)

  • 华为手机阻止一切来电怎么设置(华为手机如何阻止)

    华为手机阻止一切来电怎么设置(华为手机如何阻止)

  • 手机丢了关机了还能找回来吗(手机丢了关机了怎么找回来OPPO)

    手机丢了关机了还能找回来吗(手机丢了关机了怎么找回来OPPO)

  • 虚拟机硬盘设大了可以调小吗(虚拟机硬盘内存设置多大合适)

    虚拟机硬盘设大了可以调小吗(虚拟机硬盘内存设置多大合适)

  • 页面设置在哪(幻灯片页面设置在哪)

    页面设置在哪(幻灯片页面设置在哪)

  • 美团打车加入条件(美团打车怎么加入要求)

    美团打车加入条件(美团打车怎么加入要求)

  • 怎么用副号打电话(怎么用副号打电话给别人)

    怎么用副号打电话(怎么用副号打电话给别人)

  • xr和11一样大吗(xr和11一样大吗?)

    xr和11一样大吗(xr和11一样大吗?)

  • 淘宝号打标什么意思(淘宝号打标就是降权吗)

    淘宝号打标什么意思(淘宝号打标就是降权吗)

  • 朋友圈仅聊天对面什么状态(朋友圈仅聊天对方显示什么3)

    朋友圈仅聊天对面什么状态(朋友圈仅聊天对方显示什么3)

  • 苹果新换的电池掉电快(苹果新换的电池充不进去电)

    苹果新换的电池掉电快(苹果新换的电池充不进去电)

  • 微信设置仅聊天是什么意思(微信设置仅聊天还能看到视频号的内容吗)

    微信设置仅聊天是什么意思(微信设置仅聊天还能看到视频号的内容吗)

  • 如何将一个微信上的好友转移到另一个微信上(如何将一个微信的聊天内容迁移到另一个微信)

    如何将一个微信上的好友转移到另一个微信上(如何将一个微信的聊天内容迁移到另一个微信)

  • 抖音蓝v认证后有效果吗(抖音蓝v认证后昵称必须和公司名一样吗?)

    抖音蓝v认证后有效果吗(抖音蓝v认证后昵称必须和公司名一样吗?)

  • 怎样使用天猫上门取件服务(怎么用天猫买东西)

    怎样使用天猫上门取件服务(怎么用天猫买东西)

  • 小米cc9多少时间充满电(小米cc9e多长)

    小米cc9多少时间充满电(小米cc9e多长)

  • 手机怎么看好友多少天(手机怎么看好友steam直播)

    手机怎么看好友多少天(手机怎么看好友steam直播)

  • 怎么把空白页删掉(怎么把空白页删掉docx)

    怎么把空白页删掉(怎么把空白页删掉docx)

  • 华为手机克隆在哪(华为手机克隆在苹果对应什么软件)

    华为手机克隆在哪(华为手机克隆在苹果对应什么软件)

  • 全民k歌怎么导出音乐(全民k歌怎么导入自己的伴奏)

    全民k歌怎么导出音乐(全民k歌怎么导入自己的伴奏)

  • 常见的电脑病毒以及种类有哪些?(常见的电脑病毒危害)

    常见的电脑病毒以及种类有哪些?(常见的电脑病毒危害)

  • 电脑连上wifi上不了网是怎么回事?(电脑连上WiFi上不了网怎么办?)

    电脑连上wifi上不了网是怎么回事?(电脑连上WiFi上不了网怎么办?)

  • 微软 Win11 22449.1000 版已将磁盘清理替换为新版“存储管理”(微软手机)

    微软 Win11 22449.1000 版已将磁盘清理替换为新版“存储管理”(微软手机)

  • Python Module — OpenAI ChatGPT API

    Python Module — OpenAI ChatGPT API

  • 无形资产的税费计入
  • 民办非企业捐赠承诺书
  • 发票红冲重新开
  • 金银首饰在哪个平台买比较好
  • 小企业商品销售的入账价格
  • 未实际处置资产怎么处理
  • 建筑施工安全费用专项检查报告怎么写
  • 挂靠单位怎么缴纳增值税?
  • 多缴纳的税款不退税怎么入账
  • 租金收入未收到 税法规定
  • 做天猫合理避税吗
  • 税控系统全额抵扣增值税申报
  • 股息率超过10%的公司
  • 资产负债率怎么计算
  • 出租无形资产收到的租金
  • 资源税纳税期限按月还是按季
  • 付款后多久开发发票
  • 公司的房产税如何征收
  • 融资租赁固定资产会计处理
  • php静态变量生命周期
  • 包装物损坏无法确认
  • php的数组函数
  • php load
  • 个别报表内部交易
  • 怎么修改?
  • 路由器怎么设置2.4g网络
  • 什么是增值税扣除标准
  • elf.exe是什么程序
  • php__call
  • 流动资产占资产总额的比率叫什么
  • echarts中的legend能被监听吗
  • vue3 script setup withdefault
  • react modal
  • 重复上次命令
  • 体检费专票可以抵扣吗
  • 增值税专用发票上注明的价款含税吗
  • mongo 更新数据
  • 收入成本怎么做账
  • 国际货运操作流程图
  • 金税盘怎么看税收编码版本号
  • 占地面积法如何分摊土地成本
  • 加计抵减进项税额怎么计算
  • mysql基本查询
  • mongodb数据库语句
  • 企业所得税不能税前扣除项目
  • 定额备用金与非备用金
  • 期货风险准备金计提比例
  • 翻唱歌曲发行至国外的好处
  • 多记财务费用怎么调整
  • 代收的车船税没有发票怎么入账
  • 全资子公司可以转让吗
  • 办公室装修费计入长期待摊费用
  • 收据可以纳税吗
  • 原材料用于在建工程进项税可以抵扣吗
  • 残保金怎么做账务处理
  • 企业哪些税费不通过应交税费账户进行核算
  • 国债利息收入企业所得税调增
  • 费用报销如何做账务处理分录
  • 废料销售的会计处理
  • 社保金的滞纳金个人承担吗?
  • 技术服务费怎么交税
  • 应付账款在贷方负数
  • 什么差旅费
  • 普通发票如何抵扣税
  • 企业建账目的
  • sqlserver 触发器 if 后边没执行
  • windows开发了多久
  • windows8自动更新卡住了怎么办
  • 直接在u盘上工作
  • centos最小化安装配置网络
  • 微软补丁发布时间
  • 升级win10后无法修改magicbook开机画面
  • 定时删除一个文件怎么删
  • dos批处理教程
  • nodejs connect
  • androidstudiosdk
  • android开发最全教程
  • shell脚本模拟ctrl
  • 微信假消息
  • 华数tv业务认证账号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设