javascript canvas API内容整理


Posted in Javascript onFebruary 16, 2020

HTMLCanvasElement //canvas elem对象

属性

height//高

width//宽

方法

getContext()//获取<canvas>相关的可绘制的上下文

toBlob()//(ie 不支持)此方法可以将<canvas>画布转换为base64格式的图片数据,我们可以通过设定参数指定转换的图片类型,甚至图片的清晰度

toDataURL()//可以将<canvas>画布转换为Blob对象

CanvasRenderingContext2D//等于 canvas.getContext('2d')对象;

绘制矩形

  • canvas.clearRect()//清除指定矩形区域内部所有的像素信息为初始色(通常为透明)。
  • canvas.fillRect()//矩形填充,可以填充颜色,渐变,图案等。
  • canvas.strokeRect()//矩形描边。

绘制文本

  • canvas.fillText()//文字填充,可以填充纯色,渐变或者图案。
  • canvas.strokeText()//文字描边。
  • canvas.measureText()//文字测量。返回TextMetrics对象,该对象的width属性值就是字符占据的宽度。

文本样式

  • canvas.font//设置字体相关样式,包括字号,字体信息。默认值是10px sans-serif。
  • canvas.textAlign//设置文本水平对齐方式。支持属性值有:start(默认值),end,left,right以及center。
  • canvas.textBaseline//设置文本基线对齐方式。支持属性值有:top,hanging,middle,alphabetic(默认值),ideographic,bottom。
  • canvas.direction//设置文本显示方向。支持属性值有:inherit(默认值),ltr和rtl。

填充和描边

  • canvas.fillStyle//填充样式。默认值是#000000纯黑色。
  • canvas.fill()//填充。
  • canvas.strokeStyle//描边样式。默认值是#000000纯黑色。
  • canvas.stroke()//描边。

渐变相关

  • canvas.createLinearGradient()//创建线性渐变。
  • canvas.createRadialGradient()//创建径向渐变。

图案相关

canvas.createPattern()//创建图案。图案内容可以是图片,可以是<canvas>元素,也可以是渐变。此方法返回CanvasPattern对象。

阴影相关

  • canvas.shadowBlur//阴影模糊大小。默认值是0。
  • canvas.shadowColor//阴影颜色。默认值是全透明黑色。
  • canvas.shadowOffsetX//阴影水平偏移大小。默认值是0。
  • canvas.shadowOffsetY//阴影垂直偏移大小。默认值是0。

绘制路径

  • canvas.beginPath()//开始一个新路径。
  • canvas.closePath()//闭合一个路径。
  • canvas.moveTo()//路径绘制起始点。
  • canvas.lineTo()//绘制直线到指定坐标点。
  • canvas.bezierCurveTo()//绘制贝赛尔曲线到指定坐标点。
  • canvas.quadraticCurveTo()//绘制二次贝赛尔曲线到指定坐标点。
  • canvas.arc()//绘制圆弧(包括圆)。
  • canvas.arcTo()//绘制圆弧,和之前的点以直线相连。
  • canvas.rect()//绘制矩形路径。
  • canvas.ellipse()//绘制椭圆路径。
  • canvas.clip()//创建剪裁路径,之后绘制的路径只有在里面的才会显示。

线条样式

  • canvas.lineWidth//线条宽度,主使用场景是描边,默认宽度是1.0,支持小数。
  • canvas.lineCap//线条端点的样式。支持如下属性值:butt(默认值,断头,无端帽),round(圆形端帽),square(方形端帽)。
  • canvas.lineJoin//线条转角的样式。支持如下属性值:miter(默认值,尖角),round(圆角),bevel(平角)。
  • canvas.miterLimit//尖角限制比率。线条的尖角如果没有限制,在线条粗角度小的情况下会很长很长,因此,需要一个限制比率。默认是10。
  • canvas.getLineDash()//返回当前虚线数值。返回值是一个偶数个数的数组
  • canvas.setLineDash()//设置线条为虚线。
  • canvas.lineDashOffset//设置虚线的起始偏移。

位置检测

  • canvas.isPointInPath()//当前点是否在指定路径内。
  • canvas.isPointInStroke()//当前点是否在指定路径描边上。

变换

  • canvas.rotate()//旋转。
  • canvas.scale()//缩放。
  • canvas.translate()//位移。
  • canvas.transform()//当前矩阵变换基础上再次矩阵变换。
  • canvas.setTransform()//直接重置为当前设置的矩阵变换。

透明度和层级

  • canvas.globalAlpha//全局透明度。
  • canvas.globalCompositeOperation//设置图形叠加时候的混合方式,可以用来改变绘制元素上下叠加关系,也就是层级。

图片与像素

canvas.drawImage()//图片绘制在画布上。
//drawImage 优化: 离屏绘制:
/* 上一节提到,绘制同样的一块区域,如果数据源是尺寸相仿的一张图片,那么性能会比较好,
而如果数据源是一张大图上的一部分,性能就会比较差,因为每一次绘制还包含了裁剪工作。也许,
我们可以先把待绘制的区域裁剪好,保存起来,这样每次绘制时就能轻松很多。
drawImage 方法的第一个参数不仅可以接收 Image 对象,也可以接收另一个 Canvas 对象。
而且,使用 Canvas 对象绘制的开销与使用 Image 对象的开销几乎完全一致。
我们只需要实现将对象绘制在一个未插入页面的 Canvas 中,然后每一帧使用这个 Canvas 来绘制
*/
canvas.createImageData()//创建一个新的空白的ImageData对象。
canvas.getImageData()//获取Canvas画布的设定区域的ImageData对象。
canvas.putImageData()//给定的ImageData对象应用在Canvas画布上。

Canvas状态

  • Canvas状态管理几个方法。
  • canvas.save()//存储当前Canvas的状态。
  • canvas.restore()//恢复Canvas到前一次存储的状态。
  • canvas.canvas//反向识别当前上下文源自哪个HTMLCanvasElement。

其他方法

其他一些不常用的API方法。

  • canvas.drawFocusIfNeeded()//如果给定元素被聚焦,则该方法在当前路径周围绘制焦点环。
  • canvas.scrollPathIntoView()//将当前路径或给定路径滚动到视图中。

CanvasGradient

方法

addColorStop()//给渐变增加新的渐变点

ImageBitmap

属性

height//只读。是无符号长整数,表示ImageBitmap对象的CSS像素高度
width//只读。是无符号长整数,表示ImageBitmap对象的CSS像素宽度

方法

close()//处置所有与ImageBitmap关联的图形资源

ImageData

属性

data//只读。是一个包含RGBA像素信息的Uint8ClampedArray,数组中所有的值都是整数,范围是0~255
height//只读。是无符号长整数,表示ImageData对应的实际像素高度
width//只读。是无符号长整数,表示ImageData对应的实际像素宽度

TextMetrics

属性

width//只读。表示当前文本占据的CSS像素宽度

CanvasImageSource

无暴露属性,无继承方法。

CanvasPattern

无暴露属性,无继承方法。

RenderingContext

无暴露属性,无继承方法。

以上就是小编整理的全部相关内容,希望能够帮助到你。

Javascript 相关文章推荐
jquery $.ajax入门应用二
Nov 19 Javascript
javascript制作sql转换为stringBuffer的小工具
Apr 03 Javascript
jquery专业的导航菜单特效代码分享
Aug 29 Javascript
JS+CSS实现电子商务网站导航模板效果代码
Sep 10 Javascript
JavaScript实现横向滑出的多级菜单效果
Oct 09 Javascript
JavaScript实现两个select下拉框选项左移右移
Mar 09 Javascript
JS实现微信里判断页面是否被分享成功的方法
Jun 06 Javascript
Webpack 服务器端代码打包的示例代码
Sep 19 Javascript
vue学习教程之带你一步步详细解析vue-cli
Dec 26 Javascript
JS实现图片上传多次上传同一张不生效的处理方法
Aug 06 Javascript
layer实现登录弹框,登录成功后关闭弹框并调用父窗口的例子
Sep 11 Javascript
完美解决通过IP地址访问VUE项目的问题
Jul 18 Javascript
vue props 单项数据流实例分享
Feb 16 #Javascript
卸载vue2.0并升级vue_cli3.0的实例讲解
Feb 16 #Javascript
vue中axios防止多次触发终止多次请求的示例代码(防抖)
Feb 16 #Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
Feb 16 #Javascript
封装一下vue中的axios示例代码详解
Feb 16 #Javascript
Vue.js的模板语法详解
Feb 16 #Javascript
Vue两个版本的区别和使用方法(更深层次了解)
Feb 16 #Javascript
You might like
Symfony2使用第三方库Upload制作图片上传实例详解
2016/02/04 PHP
实现png图片和png背景透明(支持多浏览器)的方法
2009/09/08 Javascript
单独使用CKFinder选择图片的方法
2010/08/21 Javascript
深入探究使JavaScript动画流畅的一些方法
2015/06/30 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
2015/12/07 Javascript
深入学习AngularJS中数据的双向绑定机制
2016/03/04 Javascript
浅谈AngularJs指令之scope属性详解
2016/10/24 Javascript
Angular+Bootstrap+Spring Boot实现分页功能实例代码
2017/07/21 Javascript
node中modules.exports与exports导出的区别
2018/06/08 Javascript
vue利用v-for嵌套输出多层对象,分别输出到个表的方法
2018/09/07 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
nuxt.js添加环境变量,区分项目打包环境操作
2020/11/06 Javascript
HTML元素拖拽功能实现的完整实例
2020/12/04 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
2021/01/13 Vue.js
[00:37]DOTA2上海特级锦标赛 Secert 战队宣传片
2016/03/03 DOTA
python中的对象拷贝示例 python引用传递
2014/01/23 Python
利用Anaconda简单安装scrapy框架的方法
2018/06/13 Python
python找出完数的方法
2018/11/12 Python
Python计算一个点到所有点的欧式距离实现方法
2019/07/04 Python
Python数据持久化存储实现方法分析
2019/12/21 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
python中random.randint和random.randrange的区别详解
2020/09/20 Python
巴西购物网站:Estrela10
2018/12/13 全球购物
Windows和Linux动态库应用异同
2016/04/17 面试题
应聘医药代表职位求职信
2013/10/21 职场文书
招聘与培训专员岗位职责
2014/01/30 职场文书
银行青年文明号事迹材料
2014/05/31 职场文书
幼儿园六一亲子活动方案
2014/08/26 职场文书
纪律教育学习心得体会
2014/09/02 职场文书
2015年父亲节活动总结
2015/02/12 职场文书
员工考勤管理制度
2015/08/06 职场文书
加薪申请书应该这样写!
2019/07/04 职场文书
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL
星际争霸:毕姥爷vs解冻03
2022/04/01 星际争霸
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL
Java处理延时任务的常用几种解决方案
2022/06/01 Java/Android