文章目录

  • Canvas
    • 使用 style 绘制
    • 使用 JavaScript 绘制
    • Canvas 坐标
    • Canvas 路径
    • 绘制圆形
    • Canvas 文本
      • 在画布上绘制一个高 30px 的文字(实心)
      • 在画布上绘制一个高 30px 的文字(空心)
    • Canvas 渐变
      • 线性渐变
      • 径向/圆渐变
    • Canvas 图像

Canvas

<canvas> 元素用于图形的绘制,该标签只是图形容器,要想绘制图形,还必须使用脚本 (通常是JavaScript)。

语法<canvas id="myCanvas" width="200" height="100"></canvas>

  • id:便于在脚本中被引用
  • width:画布的宽
  • height:画布的高

可以在HTML页面中使用多个 <canvas> 元素,进行图形的绘制。

使用 style 绘制

<canvas id="myCanvas" width="200" height="100" style="border:5px solid pink;">浏览器不支持 canvas 画布效果
</canvas>

使用 JavaScript 绘制

fillStyle:设置CSS颜色、渐变或图案,默认是#000000(黑色)。

fillRect(x,y,width,height) :设置矩形当前的填充方式

  • x:x轴坐标
  • y:y轴坐标
  • width:宽
  • height:高
<canvas id="myCanvas" width="200" height="100" style="border:5px solid pink">浏览器不支持 canvas 画布效果
</canvas>
<script>const myC = document.getElementById("myCanvas")// 2d 图let ctx = myC.getContext("2d")// 设置颜色ctx.fillStyle = "red"// 定义填充图形的坐标和宽高// fillRect(x坐标, y坐标, 宽, 高)ctx.fillRect(0, 0, 150, 80)
</script>

Canvas 坐标

canvas 是一个二维网格

canvas 的左上角坐标为 (0,0)

Canvas 路径

Canvas画线

语法:(三个条件缺一不可)

  • moveTo(x,y):线条开始坐标
  • lineTo(x,y):线条结束坐标
  • stroke():绘制线条

定义开始坐标(0,0), 和结束坐标 (200,100)

<canvas id="myCanvas" width="200" height="100" style="border:5px solid pink">浏览器不支持 canvas 画布效果
</canvas>
<script>const myC = document.getElementById("myCanvas")let ctx = myC.getContext("2d")// 起始坐标ctx.moveTo(0, 0)// 结束坐标ctx.lineTo(200, 100)// 绘制线条ctx.stroke()
</script>

绘制圆形

语法arc(x,y,r,start,stop)

  • x:圆心在x轴上的坐标
  • y:圆心在y轴上的坐标
  • r:半径长度
  • start:起始角度,以弧度表示,以x轴方向为0度
  • stop:结束角度,以弧度表示

绘制一个圆

<canvas id="myCanvas" width="200" height="100" style="border:5px solid pink">浏览器不支持 canvas 画布效果
</canvas>
<script>const myC = document.getElementById("myCanvas")let ctx = myC.getContext("2d")// 开始路径ctx.beginPath()// arc(x轴圆点,y轴圆点,半径,开始弧度,结束弧度)ctx.arc(100, 50, 40, 0, 180)// 绘制线条ctx.stroke()
</script>

Canvas 文本

使用 canvas 绘制文本

语法

  • font:定义字体
  • fillText(text,x,y):绘制实心的文本
    • text:文字
    • x:x轴坐标
    • y:y轴坐标
  • strokeText(text,x,y):绘制空心的文本
在画布上绘制一个高 30px 的文字(实心)
<canvas id="myCanvas" width="200" height="100" style="border:5px solid pink">浏览器不支持 canvas 画布效果
</canvas>
<script>const myC = document.getElementById("myCanvas")let ctx = myC.getContext("2d")// 定义字体ctx.font = "30px 宋体"// 填充文字,坐标位置ctx.fillText("hello world", 10, 50)
</script>

在画布上绘制一个高 30px 的文字(空心)
<canvas id="myCanvas" width="200" height="100" style="border:5px solid pink">浏览器不支持 canvas 画布效果
</canvas>
<script>const myC = document.getElementById("myCanvas")let ctx = myC.getContext("2d")// 定义字体ctx.font = "30px 宋体"// 填充文字,坐标位置ctx.strokeText("hello world", 10, 50)
</script>

Canvas 渐变

渐变可以填充在矩形、圆形、线条、文本等等,各种形状可以自己定义不同的颜色

语法

  • createLinearGradient(x,y,x1,y1):创建线性渐变

    • x:起始位置的x轴坐标
    • y:起始位置的y轴坐标
    • x1:渐变终点位置的x坐标
    • y1:渐变终点位置的y坐标
  • createRadialGradient(x,y,r,x1,y1,r1):创建一个径向/圆渐变
    • x:渐变的开始圆的 x 坐标
    • y:渐变的开始圆的 y 坐标
    • r:开始圆的半径
    • x1:渐变的结束圆的 x 坐标
    • y1:渐变的结束圆的 y 坐标
    • r1:结束圆的半径

当我们使用渐变对象,必须使用两种或两种以上的停止颜色

设置好上面的渐变样式之后,需要使用下面的几种方法来呈现出渐变效果

  • addColorStop():颜色停止,参数使用坐标来描述,可以是0至1.
  • 设置 fillStylestrokeStyle 的值为 渐变 (刚刚设置的渐变样式)
  • 使用 fillRect绘制形状,如矩形、文本或一条线。
线性渐变

ctx.createLinearGradient(x,y,x1,y1)

(x, y)起始x轴坐标, 起始y轴坐标 – 从这个坐标就开始颜色的渐变

(x1, y1)结束x轴坐标, 结束y轴坐标 – 从这个坐标就慢慢的停止了颜色的渐变

<canvas id="myCanvas" width="200" height="100" style="border:5px solid pink">浏览器不支持 canvas 画布效果
</canvas>
<script>const myC = document.getElementById("myCanvas")let ctx = myC.getContext("2d")// ctx.createLinearGradient(起始x轴坐标, 起始y轴坐标, 结束x轴坐标, 结束y轴坐标)// 起始x轴坐标, 起始y轴坐标 -- 从这个坐标就开始颜色的渐变// 结束x轴坐标, 结束y轴坐标 -- 从这个坐标就慢慢的停止了颜色的渐变let grd = ctx.createLinearGradient(0, 0, 150, 0)// 线性开始的颜色grd.addColorStop(0, 'red')// 0-0.5 就是红色->粉红的线性过渡// 线性中间的颜色grd.addColorStop(0.5, 'pink')// 0.5-1 就是粉红到黄色的线性过渡// 线性结束的颜色grd.addColorStop(1, 'yellow')// 要将设置的线性渐变样式填充到现在矩形中,才会有显示的效果ctx.fillStyle = grd// 创建矩形,这样才有容器来装载填充的样式// ctx.fillRect(起始x轴坐标, 起始y轴坐标, 矩形宽,矩形高)// 这个只是设置矩形的开始坐标(x, y)和宽高// 只有内部的颜色是受线性渐变的影响ctx.fillRect(10, 10, 150, 80)
</script>

径向/圆渐变

ctx.createRadialGradient(x,y,r,x1,y1,r1)

(x, y)起始x轴坐标, 起始y轴坐标 – 从这个坐标就开始颜色的渐变

r初始的半径长度 – 这个是圆开始的半径 (我的理解是在这个半径长度还是最初那个颜色构成的,0处那个颜色)

(x1, y1)结束x轴坐标, 结束y轴坐标 – 从这个坐标就慢慢的停止了颜色的渐变

r1结束时的半径 – 这个是圆结束的半径 (我的理解是在这个半径长度是最初和中间那些颜色构成的,[0,1)处那些颜色)

(x,y)(x1,y1) 相同的情况下可形成同心圆

<canvas id="myCanvas" width="200" height="100" style="border:5px solid pink">浏览器不支持 canvas 画布效果
</canvas>
<script>const myC = document.getElementById("myCanvas")let ctx = myC.getContext("2d")// ctx.createRadialGradient(//      起始x轴坐标, 起始y轴坐标, 初始的半径长度, //      结束x轴坐标, 结束y轴坐标, 结束时的半径)// 一般来说将结束时的半径设的比较大,这样的径向渐变好看一些let grd = ctx.createRadialGradient(80, 50, 4, 90, 60, 100)// 渐变开始的颜色grd.addColorStop(0, 'red')// 0-0.5 就是红色->粉红的线性过渡// 渐变中间的颜色grd.addColorStop(0.5, 'pink')// 0.5-1 就是粉红到黄色的线性过渡// 渐变结束的颜色grd.addColorStop(1, 'yellow')// 要将设置的径向渐变样式填充到现在矩形中,才会有显示的效果ctx.fillStyle = grd// 创建矩形,这样才有容器来装载填充的样式// ctx.fillRect(起始x轴坐标, 起始y轴坐标, 矩形宽,矩形高)// 这个只是设置矩形的开始坐标(x, y)和宽高// 只有内部的颜色是受径向渐变的影响ctx.fillRect(10, 10, 160, 80)
</script>

Canvas 图像

把一幅图像放置到画布上

语法drawImage(image,x,y)

  • image:获取到的<img>
  • x:起始的x轴
  • y:起始的y轴

把一幅图像放置到画布上

<!-- 网上的图,失效了换个就可以了-->
<!-- 图太大显示不完全-->
<img src="https://img0.baidu.com/it/u=3106776703,133036379&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800" width="200"height="100" alt="">
<canvas id="myCanvas" width="300" height="400" style="border:5px solid pink">浏览器不支持 canvas 画布效果
</canvas>
<script>const myC = document.getElementById("myCanvas")const img = document.getElementsByTagName("img")[0]/* img.onclick = function () {console.log('jj')} */let ctx = myC.getContext("2d")img.onload = function () {ctx.drawImage(img, 0, 0)}
</script>

CSS3画布Canvas知识点相关推荐

  1. html画布设计,10个会让你惊叹不已的HTML5画布(canvas)技术应用

    随着老式浏览器(IE6)的逐渐淘汰,现代浏览器(火狐浏览器,谷歌浏览器,Opera,Safari)走向主流,越来越多的HTML5和CSS3技术开始出现在各种网站上.这些最新的网页技术究竟能给我们今后的 ...

  2. 未来技术 html5 app,未来web浏览技术提前体验:10个会让你惊叹不已的HTML5画布(canvas)技术应用演示...

    随着老式浏览器(IE6,IE8)的逐渐淘汰,现代浏览器(火狐浏览器,谷歌浏览器,Opera,Safari)走向主流,越来越多的HTML5和CSS3技术开始出现在各种网站上.这些最新的网页技术究竟能给我 ...

  3. html5 2020视觉效果,体验未来:10个会让你惊叹不已的HTML5画布(CANVAS)技术应用演示-UI博客精选...

    随着老式浏览器(IE6)的逐渐淘汰,现代浏览器(火狐浏览器,谷歌浏览器,Opera,Safari)走向主流,越来越多的HTML5和CSS3技术开始出现在各种网站上.这些最新的网页技术究竟能给我们今后的 ...

  4. 熬夜总结了 “HTML5画布” 的知识点(共10条)

    前言 html5Canvas的知识点,是程序员开发者必备技能,在实际工作中也常常会涉及到. 最近熬夜总结html5Canvas相关的知识点,大家一起看一下吧: 1.html5Canvas基础知识 Ca ...

  5. 熬夜总结了 “HTML5画布” 的知识点(万字长文,建议收藏)

    感谢哪吒的投稿 前言 html5Canvas的知识点,是开发的必备技能,在实际工作中也常常会涉及到. 最近熬夜总结html5Canvas相关的知识点,大家一起看一下吧: 1.html5Canvas基础 ...

  6. 详细讲解HTML5画布Canvas

    因为在整理画布的知识点,结果发现了这个贼厉害的博客,参考原博客:https://blog.csdn.net/u012468376/article/details/73350998 学习HTML5 Ca ...

  7. 用html5写一段文字画布中,10个让人惊叹的HTML5画布(canvas)技术效果

    随着老式浏览器(IE6,IE8)的逐渐淘汰,现代浏览器(火狐浏览器,谷歌浏览器,Opera,Safari)走向主流,越来越多的HTML5和CSS3技术开始出现在各种网站上.这些最新的网页技术究竟能给我 ...

  8. 画布canvas和webSocket存储

    画布 今天的学习主要从画布.拖曳.存储以及webSocket这四方面来学习. jQuery 画布 1.画布 1.1 画布的知识点总结 1.2 画布的练习 练习1-矩形 练习2-三角形 练习3-五角星 ...

  9. 刮刮乐html5效果擦除,利用HTML5的画布Canvas实现刮刮卡效果

    先给大家展示效果: 你玩过刮刮卡么?一不小心可以中奖的那种.今天我给大家分享一个基于HTML5技术实现的刮刮卡效果,在PC上只需按住鼠标,在手机上你只需按住指头,轻轻刮去图层就可以模拟真实的刮奖效果. ...

最新文章

  1. Openfire 代码部署报错: Variable references non-existent resource:${workspace_loc:openfire_src}...
  2. python语言必背代码-好用到哭!请记住这20段Python代码
  3. ML之分类预测:机器学习中多分类预测数据集可视化(不同类别赋予不同颜色)设计思路及代码实现
  4. rnn 梯度消失爆炸
  5. svn不知道这样的主机 怎么解决_家里装修不知道怎么配置净水器,这几招教你轻松解决...
  6. 驱动级的自动按键_Aqara全自动智能推拉锁D100,体验全自动开门的便捷
  7. cif是目的港交货吗_刚接手出口业务,搞不懂FOB? CIF? 为你科普→
  8. 随笔编号-03 基本类型相互转换集合
  9. Typore快速插入图片
  10. linux内核2.6.3x--Executable file formats / Emulations、 Networking support
  11. python入门教程陈孟林_Python快速入门指南,没基础没关系
  12. 详细SpringBoot教程之入门(一)
  13. 利用迭代公式求平方根。
  14. java学习书籍推荐
  15. 会用top与free命令查看linux服务器内存使用情况
  16. 本周白银价格走势仍关注美经济数据
  17. 媒体《中国经济新闻联播》采访吴海涛网红云商电商趋势
  18. 预计2017年底Lyft美国市场份额将占1/3
  19. esxi系统重装与vsan恢复
  20. Holy.Motors影评 神圣车行

热门文章

  1. 常见snapper.sql脚本使用方法
  2. html的class怎么使用方法,HTML的class属性怎么用?使用方法详细总结!
  3. OCR识别——百度飞桨PaddleOCR测试及环境搭建详解
  4. EDI 855 采购订单确认
  5. 2021年移动开发者未来的出路在哪里,年薪50W
  6. 重点算法排序之快速排序、归并排序(上篇)
  7. createGiottoVisiumObject从10x原始数据创建 giotto对象
  8. 第一章 Java特性
  9. [译]2019版 web 浏览器现状
  10. C 修改服务器代码,rpg c 游戏服务器代码大全