Canvas

canvas 最早由Apple引入WebKit,用于Mac OS X 的 Dashboard,后来又在Safari和Google Chrome被实现。基于 Gecko 1.8的浏览器,比如 Firefox 1.5, 同样支持这个元素。<canvas> 元素是WhatWG Web applications 1.0规范的一部分,也包含于HTML 5中。


体验Canvas

什么是Canvas?

HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像。

画布是一个矩形区域,您可以控制其每一像素。

canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。

创建Canvas元素

向 HTML5 页面添加 canvas 元素。

规定元素的 id、宽度和高度:

Canvas坐标系

通过JavaScript来绘制


Canvas的基本使用

图形绘制

需要理解些概念:

1、路径的概念

2、路径的绘制

3、描边 stroke()

4、填充 fill()

闭合路径:

1、手动闭合

2、程序闭合 closePath()

填充规则(非零环绕)

        画一条线出去,经过顺时针的线加一,逆时针的线减一,结果不等于零的就填充,这就是非零填充,也可以说只要画出去的线,只要经过的顺逆时针的线次数不相等就填充。


设置样式

画笔的状态:

1、ineWidth 线宽,默认1px

2、ineCap 线末端类型:(butt默认)、round、square

3、lineJoin 相交线的拐点 miter(默认)、round、bevel

4、strokeStyle 线的颜色

5、fillStyle 填充颜色

6、setLineDash() 设置虚线

7、getLineDash() 获取虚线宽度集合

8、lineDashOffset 设置虚线偏移量(负值向右偏移)

实例练习

1、渐变色绘制

2、镂空的房子

3、绘制坐标网格

4、绘制坐标系

5、绘制坐标点

6、绘制折线图

参考文档

w3school

Canvas_API


Canvas图形绘制

矩形绘制

rect(x,y,w,h) 没有独立路径

strokeRect(x,y,w,h) 有独立路径,不影响别的绘制

fillRect(x,y,w,h) 有独立路径,不影响别的绘制

clearRect(x,y,w,h) 擦除矩形区域

圆弧绘制

弧度概念:

arc()

    x 圆心横坐标

    y 圆心纵坐标

    r 半径

    startAngle 开始位置(单位是弧度)

    endAngle 结束位置(单位是弧度)

    anticlockwise 是否逆时针方向绘制(默认false表示顺时针;true表示逆时针)

绘制文本

ctx.font = ‘微软雅黑’ 设置字体

strokeText()

fillText( text, x, y, maxWidth )

    text 要绘制的文本

    x,y 文本绘制的坐标(文本左下角)

    maxWidth 设置文本最大宽度,可选参数

ctx.textAlign文本水平对齐方式,相对绘制坐标来说的

    left

    center

    right

    start 默认

    end

ctx.direction属性css(rtl ltr) start和end于此相关

    如果是ltr,start和left表现一致

    如果是rtl,start和right表现一致

ctx.textBaseline 设置基线(垂直对齐方式 )

    top 文本的基线处于文本的正上方,并且有一段距离

    middle 文本的基线处于文本的正中间

    bottom 文本的基线处于文本的证下方,并且有一段距离

    hanging 文本的基线处于文本的正上方,并且和文本粘合

    alphabetic 默认值,基线处于文本的下方,并且穿过文字

    ideographic 和bottom相似,但是不一样

measureText() 获取文本宽度obj.width

实例练习

绘制扇形

绘制圆角矩形

绘制圆

绘制饼图


做动画

绘制图片

drawImage()

    三个参数drawImage(img,x,y)

        img 图片对象、canvas对象、video对象

        x,y 图片绘制的左上角

    五个参数drawImage(img,x,y,w,h)

        img 图片对象、canvas对象、video对象

        x,y 图片绘制的左上角

        w,h 图片绘制尺寸设置(图片缩放,不是截取)

    九个参数drawImage(img,x,y,w,h,x1,y1,w1,h1)

        img 图片对象、canvas对象、video对象

        x,y,w,h 图片中的一个矩形区域

        x1,y1,w1,h1 画布中的一个矩形区域

转换图片

toDataURL()

    type:图片格式,默认为 image/png(image/jpeg,image/webp)

    encoderOptions,在指定图片格式为 image/jpeg 或 image/webp的情况下,可以从 0 到 1 的区间内选择图片的质量。如果超出取值范围,将会使用默认值 0.92。其他参数会被忽略

用法:


序列帧动画

绘制精灵图

动起来

控制边界

键盘控制

坐标变换

平移 移动画布的原点

    translate(x,y) 参数表示移动目标点的坐标

缩放

    scale(x,y) 参数表示宽高的缩放比例,参数值是0~1

旋转

    rotate(angle) 参数表示旋转弧度,一度等于 Math.PI / 180

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,718评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,683评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,207评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,755评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,862评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,050评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,136评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,882评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,330评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,651评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,789评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,477评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,135评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,864评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,099评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,598评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,697评论 2 351