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. windows查看硬件信息系统信息

    rem 查看cpu wmic cpu list briefrem 查看物理内存wmic memphysical list briefrem 查看逻辑内存wmic memlogical list bri ...

  2. LightOJ 1300 Odd Personality

    Odd Personality Time Limit: 2000ms Memory Limit: 32768KB This problem will be judged on LightOJ. Ori ...

  3. windows删除多余启动引导项

    方法1: 按快捷键win+r,打开运行界面,输入msconfig. 点击确定,进入系统配置,选择引导选项卡,如图: 选中你不需要的启动项,点击下面的删除按钮即可.删除完成之后点击确定,重启计算机就可以 ...

  4. Centos6.4安装opennebula

    Centos6.4安装opennebula #安装163源 http://mirrors.163.com/.help/CentOS6-Base-163.repo #安装epel源 wget http: ...

  5. 关于使用strtok的一个小问题

    今天在弄一下啊小小程序的时候.报错,出现了问题.先看代码 int main(int argc, char* argv[]) { char *filename = "interface_ips ...

  6. 使WordPress改域名后网站正常运行的方法

    使WordPress改域名后网站正常运行的方法 wp-content/wp-config.php $path = '/blog'; $scheme = (isset($_SERVER['HTTPS'] ...

  7. android图像处理系列之七--图片涂鸦,水印-图片叠加

    图片涂鸦和水印其实是一个功能,实现的方式是一样的,就是一张大图片和一张小点图片叠加即可.前面在android图像处理系列之六--给图片添加边框(下)-图片叠加中也讲到了图片叠加,里面实现的原理是直接操 ...

  8. go每个函数写代码例子

    https://github.com/astaxie/gopkg 由于目前golang的手册里面针对函数的例子太少了,很多时候不知道怎么使用,好多人都是看源代码才明白怎么用,这个给我们快速开发gola ...

  9. 关于Promise详解

    异步回调 回调地狱 在需要多个操作的时候,会导致多个回调函数嵌套,导致代码不够直观,就是常说的回调地狱 并行结果 如果几个异步操作之间并没有前后顺序之分,但需要等多个异步操作都完成后才能执行后续的任务 ...

  10. Linux 网卡驱动学习(九)(层二转发)

    1.mac 地址表的自学习过程 port1上的A计算机要与port2上的B计算机通信时,A发到交换机上,交换机收到信息后,交换机先记录发port1所相应的a的mac地址并记录在自己的mac表中,然后再 ...