一、canvas画布

Canvas是HTML5中新出的一个元素,开发者可以通过JS脚本动态绘制图像。

#1. 创建canvas画布

在页面中创建canvas标签,并设置其id和宽高 (不要通过css设置,会有bug)

<canvas id="myCanvas" width="500" height="500">
 

#2. 设置画布

// 1. 通过js设置画布宽高
var canvas = document.getElementById('myCanvas');
canvas.width = 800;
canvas.height = 600; // 2. 获取上下文对象 (可以理解为获取画笔)
var cxt = canvas.getContext('2d');
 

#二、绘制 - 线条

方法 描述
beginPath() 开启路径
moveTo(x,y) 起始点
lineTo(x,y) 下一个点
closePath() 闭合路径
stroke() 描边绘制
fill() 填充绘制
属性 描述
strokeStyle 描边颜色
fillStyle 填充颜色
lineWidth 粗细
lineCap 设置或返回线条端点样式
butt 默认,平直边缘
round 圆形线帽
square 正方形线帽
lineJoin 设置或返回两条相交线的拐角
miter 默认,尖角
round 圆角
bevel 斜角

#三、绘制 - 矩形

方法 描述
rect(x,y,width,height) 需配合stroke()或fill()方法绘制矩形
fillRect(x,y,width,height) 绘制填充矩形
strokeRect(x,y,width,height) 绘制矩形边框
clearRect(x,y,width,height) 清除指定矩形区域

#四、绘制 - 圆弧

==弧线==arc(x,y,r,sAngle,eAngle,counterclockwise)

参数 描述
x,y 圆心的坐标
r 圆的半径
sAngle 起始弧度
eAngle 结束弧度
弧度 = Math.PI/180*角度
counterclockwise 可选。true逆时针,false顺时针

==两切线之间的弧线== arcTo(x1,y1,x2,y2,r)

参数 描述
x1,y1 弧的起点坐标
x2,y2 弧的终点坐标
r 半径

==绘制扇形==

cxt.moveTo(x,y);
cxt.arc(x,y...);
cxt.closePath();
 

#五、绘制 - 文本

属性 描述
font 设置或返回文本的当前字体属性
textAlign 设置或返回文本的对齐方式
textBaseline 设置或返回文本的基线
方法 描述
fillText(text,x,y) 绘制填充文本
strokeText() 绘制描边文本

#六、绘制 - 图像

drawImage(img,x,y,width,height)
 
参数 描述
img 要使用的图像、视频
x 绘制的起始位置x坐标
y 绘制的起始位置y坐标
width 可选。宽度
height 可选。高度

#七、绘制 - 转换

方法 描述
scale() 缩放当前绘图至更大或更小
rotate() 旋转当前绘图
translate() 重新设置画布原点
transform() 替换绘图的当前转换矩阵
setTransform() 将当前转换重置为单位矩阵。然后运行 transform()

#八、绘制 - 渐变色

#线性渐变
var lg = ctx.createLinearGradient(x, y, x1, y1);
lg.addColorStop(渐变位置,颜色);
ctx.strokeStyle = lg;
 
#径向渐变
var rg = cxt.createRadialGradient(起始圆x, 起始圆y, 半径, 结束圆x, 结束圆y, 半径);
rg.addColorStop(渐变位置,颜色);
ctx.strokeStyle = rg;
 

#九、多图形组合方式

ctx.globalCompositeOperation =
'source-over' //后画覆盖先画
'destination-out' //后画清空先画
 

#十、保存画布

cvs.toDataURL();

移动端 canvas基础1的更多相关文章

  1. HTML5移动开发学习笔记之Canvas基础

    1.第一个Canvas程序 看的是HTML5移动开发即学即用这本书,首先学习Canvas基础,废话不多说,直接看第一个例子. 效果图为: 代码如下: <!DOCTYPE html> < ...

  2. 《HTML5 CANVAS基础教程》读书笔记

    一.HTML5简介 1.HTML5新特性 1)结构元素:section,header,hgroup,footer,nav,article,aside, 2)内容元素:figure,figcaption ...

  3. CreateJS第0章- Canvas基础

    最近网页游戏比较火,以前做过一些小游戏,但是过段时间就都忘了,今天在这里记录一下学习过程,以备后用.做网页游戏有很多种框架,我是flash程序用Adobe出品的CreateJS最容易.基本上继承了fl ...

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

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

  5. Flutter ChartSpace:通过跨端 Canvas 实现图表库

    基于Flutter 的图形语法库,通过跨端 Canvas ,将基于 Javascript 的图形语法库 ChartSpace 扩展至 Flutter 端 作者:字节跳动终端技术--胡珀 背景 数据平台 ...

  6. canvas基础之旅

    canvas 主要使用2D rendering context  API 实现其功能和特效. canvas 一般浏览器都支持,但在ie9之前的是不支持的.(解决办法:添加IxplorerCanvas ...

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

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

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

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

  9. canvas 基础知识

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

随机推荐

  1. vue中父子间传值和非父子间传值

    vue传值一般分三种方式:父组件向子组件传值.子组件向父子间传值.非父子组件进行传值 一.父组件向子组件传值:父组件引用子组件后,通过数据绑定(v-bind)向子组件传值 父组件: <templ ...

  2. MathType中的条件概率的输入

    条件概率公式是高中数学的概率知识中比较常用的一个公式,今天我们来介绍一下在MathType中如何输入条件概率公式. 具体步骤如下: 步骤一 打开专业的公式编辑软件MathType 7,在输入框中输入& ...

  3. ntfs和fat32的区别

    ntfs和fat32是两种不同的磁盘文件系统格式,虽然他们有一定的相似点,但还是具有很大的差异.今天,小编就带大家了解一下ntfs和fat32的区别. 图1 :u盘 一.分区容量 fat32能够有效管 ...

  4. 苹果电脑中怎么快速卸载Flash Player和浏览器扩展应用插件

    Adobe Flash Player是一款轻量级浏览器插件,帮助你在网页浏览过程中享受更广泛的多媒体体验.是一种拓展,与Java一样,成为安全和隐私问题的重要来源.这些都需要手动删除的Flash是令人 ...

  5. 2016年第七届蓝桥杯【C++省赛B组】F、G、H、J 题解

    F. 方格填数 #深搜 题意 有\(10\)个格子,填入0~9的数字.要求:连续的两个数字不能相邻.(左右.上下.对角都算相邻),求可能的填数方案数. +--+--+--+ | | | | +--+- ...

  6. 【操作系统】银行家算法实现(C语言)

    [操作系统]银行家算法实现(C语言) 注意:本人编码水平很菜.算是自己的一个总结.可能会有我还没有发现的bug.如果有人发现后可以指出,不胜感激. 1.银行家算法: 我们可以把操作系统看作是银行家,操 ...

  7. LaTeX中的表格

    表格插入代码及注释: 显示效果: 更多命令可以看相关文档,通过在命令行终端输入 texdoc booktab 等命令打开文档.

  8. Golang 实现 Redis(8): TCC分布式事务

    本文是使用 golang 实现 redis 系列的第八篇, 将介绍如何在分布式缓存中使用 Try-Commit-Catch 方式来解决分布式一致性问题. godis 集群的源码在Github:Godi ...

  9. Java Stream 源码分析

    前言 Java 8 的 Stream 使得代码更加简洁易懂,本篇文章深入分析 Java Stream 的工作原理,并探讨 Steam 的性能问题. Java 8 集合中的 Stream 相当于高级版的 ...

  10. moviepy音视频剪辑:追踪人脸打马赛克的三种实现方式

    ☞ ░ 前往老猿Python博文目录 ░ 一.引言 在moviepy官网的案例<Tracking and blurring someone's face>和CSDN的moviepy大神uc ...