canvas的HTML语法:

<canvas> Canvas not supported </canvas>

上面这句代码中内容部分所含的文本,这种文本的叫法“后备内容”,浏览器在不支持canvas元素的时候才会显示方该内容。

canvas元素的大小与画图表面的大小

canvas元素实际上有二套尺寸:一个是元素本身大小,还有一个是元素画图表面的大小,

当设置元素的width和height属性时,实际上是同一时候改动了该元素的本身的大小元素画图表面的大小,然而,假设是通过css来设置canvas元素的大小,那么仅仅会改变元素本身的大小。不会影响到元素画图表面的大小。

在默认情况下,canvas元素与其画图表面都是宽300像素,高150像素。


canvas元素本身提供了二个属性和三个方法

二个属性:width、height, 是用来设置canvas元素画图表面尺寸的。
三个方法:getContext()、toDataURL(type, quality) 、 toBlob(callback, type, args...)

getContext:  返回与该canvas元素相关的画图环境对象,每个canvas元素都有一个这种环境对象,并且每个环境对象都与一个canvas元素相关联。

toDataURL: 返回一个数据地址。你能够将它设置为img元素的src属性值。第一个參数指定了图像的类型,比如image/jpeg或image/png,假设不指定一个參数。则默认wgetimage/png,第二个參数必须是0~1.0之间的一个double类型的值。它表示JEPG图片的显示质量。

toBlob:创建一个用于表示此canvas元素图像文件的Blob,第一个參数是一个回调函数。浏览器会以一个指向blob的引用为參数,去调用该回调函数,第二个參数以"image/png"这种形式来指定图像类型,假设不指定,默认是“image/png”。

最后一个參数是介于 0.0~1.0之间的值。表示 JEGP图片的质量。

能够通过canvas元素来获取canvas画图环境对象的引用,下面列举canvas画图环境对象提供的全部API:

canvas:指向该画图环境所属的canvas对象。该属性常见的用途就是通过它来获取canvas元素的宽度和高度,分别调用context.canvas.width和context.canvas.height.

fillStyle:指定该画图环境在兴许的图形填充操作中所使用的颜色、渐变或图案。

font:设定在调用画图环境对象的fillText或strokeText方法时。所使用的字型。

globalAlpha:全局透明度设置,它能够取0(全然透明)~1.0(全然不透明)之间的值,浏览器会将第一个像素的alpha值与该值相乘。在绘制图像时也是如此。

globalCompositeOperation:该值决定了浏览器将某个物体绘制在其它物体之上的,所採用的绘制方式。

lineCap:该值告诉浏览器怎样绘制线段的端点,能够在下面三个值中指定一个 butt、round、square,默认值是butt.

lineWidth:该值是在canvas之中绘制线段的像素宽度,它必须是一个非负、非无穷的double值。

默认值是0.

lineJoin:该值告诉浏览器在两条线段相交时怎样来绘制焦点。

可取的值有:bevel、round、miter。默认值是miter.

miterLimit:该值告诉浏览器怎样绘制miter形式的线段焦点。

shadowBlur:该值决定了浏览器该怎样延伸阴影效果。值越高,阴影效果延伸的就越远,该值不是指阴影的像素长度,而是代表高斯模糊方程式中的參数值。

它必须是一个非负且无穷量的double值。默认值是0.

shadowColor:该值告诉浏览器使用何种颜色来绘制阴影。通常採用半透明作为该属性的值。以便让后面的背景能显示出来。

shadowOffsetX:以像素为单位。指定了阴影效果的水平方向偏移量。

shadowOffsetY: 以像素为单位,指定了阴影效果的垂直方向偏移量。

strokeStyle:指定了对路径进行描边进所用的绘制风格。该值能够被设置为某个颜色、渐变色或图案。

textAlign:决定了以fillText()或strokeText()方法进行绘制时,所画的文本的水平对齐方式。

textBaseline:决定了以fillText()或strokeText()方法时行绘制时,所画的文本的垂直对齐方式。

Canvas状态的保存与恢复

canvas的save()或restore()方法能够嵌套式调用

画图环境的save()方法将当前的画图环境堆栈顶部。
画图环境的restore()方法则会从堆栈面部弹出一组状态。并据此恢复当前画图环境的各个状态。

CanvasRenderingContext2D之中的与状态操作有关的方法


save: 将当前canvas状态推送到一个保存canvas状态的堆栈顶部。canvas状态包含了当前坐标变换信息、剪辑区域以及全部canvas画图环境对象的属性
注:canvas状态并不包含当前的路径或位图。仅仅能通过调用beginPath()来重置路径。至于位图它是canvas本身的一个属性,并不属于画图环境对象。
请注意:虽然位图是canvas对象本身的属性,然而也能够通过画图环境对象来訪问它(在环境对象上调用getImageData()方法)。

restore:将canvas状态堆栈面部的条目弹出。原来保存于栈顶的那一组状态,在弹出之后,就被设置成canvas当前的状态了。

在canvas对象上调用getBoundingClientRect()方法来获取canvas元素的边界框。该边界框的坐标是相对于整个窗体的

当前支持HTML5的浏览器都支持了clientX和clientY属性。

使用getImageData()与setImageData()方法来操作图像

使用getImageData()与setImageData()方法来保存与恢复画图环境的画图表面。一种常见的用途是通过它来实现图像滤镜:先获取图像数据,然后处理,最后将它恢复到canvas之上。

马上模式画图系统


canvas元素採用“马上模式”来绘制图形的,这意味着它会马上将你所指定的内容绘制在canvas上。然后,它就会立马忘记刚才绘制的内容,它表示canvas之中不会包含将要绘制的图形对象列表。比方SVG。则会维护一份所绘制图形对象的列表。这些画图系统被叫做“保留模式”画图系统。

离屏canvas


Canvas技术的还有一项重要功能就是能够创建并操作离屏canvas.

Canvas基础知识总结之中的一个的更多相关文章

  1. canvas基础知识

    canvas基础知识 ## CanvasDOM对象 #### 获取绘图环境```canvas.getContext();``` #### 设置宽和高```canvas.width = 500;canv ...

  2. canvas API ,通俗的canvas基础知识(四)

    今天要讲的内容是canvas的转换功能,前面的内容没用看的同学可以出门右转,先看看前面的基础知识,废话不多说,开始进入正题吧! 何为转换功能?熟悉css3的同学都知道,css3里面有transform ...

  3. canvas 基础知识整理(二)

    html部分: <canvas id="myCanvas" width="800" height="800" ></can ...

  4. canvas 基础知识整理(一)

    canvas这个 HTML 元素是为了客户端矢量图形而设计的.它自己没有行为,但却把一个绘图 API 展现给客户端 JavaScript 以使脚本能够把想绘制的东西都绘制到一块画布上. html的基本 ...

  5. canvas 基础知识

    canvas 基础 低版本的ie不支持html5,需要引入excanvas.js来让ie支持canvas. 检测支持canvas <canvas id="canvas" wi ...

  6. canvas API ,通俗的canvas基础知识(一)

    在没学canvas的时候,觉得canvas是这么的神秘,这么的绚丽,这么的高深,用canvas做出来的效果是如此的炫酷,能做的事情如此的宽广,简直让我心生敬畏之心,时常感叹:我要是得此技能,必定要上天 ...

  7. vue3 自学(一)基础知识学习和搭建一个脚手架

    两年前曾自学过几天vue,那时候版本还是vue2,但后来项目中一直没用到,当时也觉得学习成本太高,便没有继续学习下去.初学者可以看下链接文章以前的吐槽~~ 学习 Vue ,从入门到放弃 最近部门决定升 ...

  8. 【基础知识】列一下一个.Net WEB程序员需要掌握的知识

    基础部分 C# 基础语法 OOP的概念,面向对象的理解 继承 封装 多态 ASP.NET MVC (Web Form 用的越来越少,如果你不熟悉,可以不看) JavaScript 基础语法 如何在HT ...

  9. 第157天:canvas基础知识详解

    目录 一.canvas简介 1.1 什么是canvas?(了解) 1.2 canvas主要应用的领域(了解) 二.canvas绘图基础 2.0 sublime配置canvas插件(推荐) 2.1 Ca ...

随机推荐

  1. Es5正则

    ##JSON(ES5) 前端后台都能识别的数据.(一种数据储存格式) XNL在JSON出来前 JSON不支持  undefinde和函数. 示列:let = '[{"useername&qu ...

  2. area热点区域

    <area>标记:主要用于图像地图,通过该标记可以在图像地图中设定作用区域(又称为热点),这样当用户的鼠标移到指定的作用区域点击时,会自动链接到预先设定好的页面.其基本语法结构如下: &l ...

  3. 洛谷P3374 【模板】树状数组 1(CDQ分治)

    题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表示该数列数字的个数和操作的总个数. ...

  4. SQLITE数据表主键设置Id自增方法

    SQLITE数据表主键设置Id自增方法 标签: sqliteintegerinsertnulltableapi 2010-01-12 08:39 35135人阅读 评论(8) 收藏 举报  分类: S ...

  5. 18/9/16牛客网提高组Day2

    牛客网提高组Day2 T1 方差 第一眼看就知道要打暴力啊,然而并没有想到去化简式子... 可能因为昨晚没睡好,今天上午困死 导致暴力打了一个半小时,还不对... #include <algor ...

  6. C# Unity依赖注入利用Attribute实现AOP功能

    使用场景? 很多时候, 我们定义一个功能, 当我们要对这个功能进行扩展的时候, 按照常规的思路, 我们一般都是利用OOP的思想, 在原有的功能上进行扩展. 那么有没有一种东西, 可以实现当我们需要扩展 ...

  7. Mysql多实例安装+主从复制+读写分离 -学习笔记

    Mysql多实例安装+主从复制+读写分离 -学习笔记 .embody{ padding:10px 10px 10px; margin:0 -20px; border-bottom:solid 1px ...

  8. Android 基于Http的多线程下载的实现

    a.对于网络上的一个资源,首先发送一个请求,从返回的Content-Length中回去需要下载文件的大小,然后根据文件大小创建一个文件. this.fileSize = conn.getContent ...

  9. iOS开发之CocoaPods(objective-c第三方库管理工具)

    介绍: iOS开发中,大多数情况下,我们都须要集成一些第三方依赖库.对于一个稍大的项目,用到的第三方依赖库的数量也很可观.CocoaPods是objective-c第三方库管理工具,方便第三方库的管理 ...

  10. WCF REST (一)

    最近工作中学习使用了WCF REST,REST 有很多好处 高效 简约  面向资源  而客户端调用 也变得非常简单.REST 入门的资料等 大家可以去网上找 这里主要分享下遇到的问题以及解决~ 一.环 ...