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 相关文章推荐
用JavaScript脚本实现Web页面信息交互
Dec 21 Javascript
关于jquery.validate1.9.0前台验证的使用介绍
Apr 26 Javascript
jquery中加载图片自适应大小主要实现代码
Aug 23 Javascript
理解Angular数据双向绑定
Jan 10 Javascript
纯JS打造网页中checkbox和radio的美化效果
Oct 13 Javascript
vue watch监听对象及对应值的变化详解
Feb 24 Javascript
JS将网址url转化为JSON格式的方法
Jul 02 Javascript
vue+axios+promise实际开发用法详解
Oct 15 Javascript
ES6知识点整理之函数数组参数的默认值及其解构应用示例
Apr 17 Javascript
浅谈vue中使用编辑器vue-quill-editor踩过的坑
Aug 03 Javascript
在Vue中使用mockjs代码实例
Nov 25 Vue.js
JavaScript offset实现鼠标坐标获取和窗口内模块拖动
May 30 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
一些星际专用术语解释
2020/03/04 星际争霸
剧场版动画《PSYCHO-PASS 3 FIRST INSPECTOR》3月27日日本上映!
2020/03/06 日漫
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
Zend Framework+smarty用法实例详解
2016/03/19 PHP
php版微信开发之接收消息,自动判断及回复相应消息的方法
2016/09/23 PHP
php实现评论回复删除功能
2017/05/23 PHP
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解
2020/06/05 PHP
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
关于javascript中this关键字(翻译+自我理解)
2010/10/20 Javascript
给文字加上着重号的JS代码
2013/11/12 Javascript
验证码在IE中不刷新而谷歌等浏览器正常的解决方案
2014/03/18 Javascript
javascript事件冒泡详解和捕获、阻止方法
2014/04/12 Javascript
jQuery中next()方法用法实例
2015/01/07 Javascript
浅谈 Vue v-model指令的实现原理
2017/06/08 Javascript
JavaScript用二分法查找数据的实例代码
2017/06/17 Javascript
微信小程序wx.request实现后台数据交互功能分析
2017/11/25 Javascript
详解在React里使用&quot;Vuex&quot;
2018/04/02 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
2018/04/22 Javascript
通过vue写一个瀑布流插件代码实例
2019/09/07 Javascript
Postman环境变量全局变量使用方法详解
2020/08/13 Javascript
element中table高度自适应的实现
2020/10/21 Javascript
python3序列化与反序列化用法实例
2015/05/26 Python
Python正则替换字符串函数re.sub用法示例
2017/01/19 Python
python实现人人自动回复、抢沙发功能
2018/06/08 Python
django多个APP的urls设置方法(views重复问题解决)
2019/07/19 Python
python常用排序算法的实现代码
2019/11/08 Python
Python中顺序表原理与实现方法详解
2019/12/03 Python
matplotlib 多个图像共用一个colorbar的实现示例
2020/09/10 Python
Python WebSocket长连接心跳与短连接的示例
2020/11/24 Python
selenium自动化测试入门实战
2020/12/21 Python
优秀通讯员事迹材料
2014/01/28 职场文书
模具专业毕业推荐信
2014/03/08 职场文书
环保志愿者活动方案
2014/08/14 职场文书
合伙开公司协议书范本
2014/10/28 职场文书
夏洛特的网观后感
2015/06/15 职场文书
vue+elementui 实现新增和修改共用一个弹框的完整代码
2021/06/08 Vue.js