基本用法

ctx.beginPath()
ctx.moveTo(x, y)
ctx.lineTo(x, y)
ctx.stroke()
复制代码

图形

  • 折线
  • 方形
ctx.fillRect()
ctx.fillRect(25,25,25,25);
复制代码

绘制形状

添加样式和颜色

色彩

ctx.fillStyle = color  //设置图形的填充颜色ctx.strokeStyle = color     //设置图形轮廓的颜色
复制代码

设置了 strokeStyle 或者 fillStyle 的值,那么这个新值就会成为新绘制的图形的默认值。

透明度

ctx.globalAlpha = value;  //数字在 0.0(完全透明)和 1.0(完全不透明)之间
复制代码

线型

lineWidth = value
复制代码

设置线条宽度。

lineCap = type
复制代码

设置线条末端样式。它可以为下面的三种的其中之一:butt,round 和 square。默认是 butt。

lineJoin = type
复制代码

设定线条与线条间接合处的样式。它可以是这三种之一:round, bevel 和 miter。默认是 miter。

miterLimit = value
复制代码

限制当两条线相交时交接处最大长度;所谓交接处长度(斜接长度)是指线条交接处内角顶点到外角顶点的长度。

getLineDash()
复制代码

返回一个包含当前虚线样式,长度为非负偶数的数组。

setLineDash(segments)
复制代码

设置当前虚线样式。 lineDashOffset = value 设置虚线样式的起始偏移量

渐变

新建一个 canvasGradient 对象,并且赋给图形的 fillStyle 或 strokeStyle 属性。

  • createLinearGradient(x1, y1, x2, y2)方法接受 4 个参数,表示渐变的起点 (x1,y1) 与终点 (x2,y2)。

  • createRadialGradient(x1, y1, r1, x2, y2, r2) 方法接受 6 个参数,前三个定义一个以 (x1,y1) 为原点,半径为 r1 的圆,后三个参数则定义另一个以 (x2,y2) 为原点,半径为 r2 的圆。

创建出 canvasGradient 对象后,我们就可以用 addColorStop 方法给它上色了。

  • gradient.addColorStop(position, color) addColorStop 方法接受 2 个参数,position 参数必须是一个 0.0 与 1.0 之间的数值,表示渐变中颜色所在的相对位置。例如,0.5 表示颜色会出现在正中间。color 参数必须是一个有效的 CSS 颜色值(如 #FFF, rgba(0,0,0,1),等等)。

图案样式

createPattern(image, type)
复制代码

该方法接受两个参数。Image 可以是一个 Image 对象的引用,或者另一个 canvas 对象。Type 必须是下面的字符串值之一:repeatrepeat-xrepeat-yno-repeat

阴影

shadowOffsetX = float
shadowOffsetY = float
复制代码

shadowOffsetX 和 shadowOffsetY 用来设定阴影在 X 和 Y 轴的延伸距离,它们是不受变换矩阵所影响的。负值表示阴影会往上或左延伸,正值则表示会往下或右延伸,它们默认都为 0。

shadowBlur = float
复制代码

shadowBlur 用于设定阴影的模糊程度,其数值并不跟像素数量挂钩,也不受变换矩阵的影响,默认为 0。

shadowColor = color
复制代码

shadowColor 是标准的 CSS 颜色值,用于设定阴影颜色效果,默认是全透明的黑色。

填充规则

绘制文本

文本

fillText(text, x, y [, maxWidth])
复制代码

在指定的(x,y)位置填充指定的文本,绘制的最大宽度是可选的.

strokeText(text, x, y [, maxWidth])
复制代码

在指定的(x,y)位置绘制文本边框,绘制的最大宽度是可选的

  • font = value 当前我们用来绘制文本的样式. 这个字符串使用和 CSS font 属性相同的语法. 默认的字体是 10px sans-serif。

  • textAlign = value 文本对齐选项. 可选的值包括:start, end, left, right or center. 默认值是 start。

  • textBaseline = value 基线对齐选项. 可选的值包括:top, hanging, middle, alphabetic, ideographic, bottom。默认值是 alphabetic。

  • direction = value 文本方向。可能的值包括:ltr, rtl, inherit。默认值是 inherit。

先进的文本测量

measureText()
复制代码

将返回一个 TextMetrics对象的宽度、所在像素,这些体现文本特性的属性。

使用图像

获得需要绘制的图片

anvas的API可以使用下面这些类型中的一种作为图片的源:

  • HTMLImageElement 这些图片是由Image()函数构造出来的,或者任何的元素

  • HTMLVideoElement 用一个HTML的 <video>元素作为你的图片源,可以从视频中抓取当前帧作为一个图像

  • HTMLCanvasElement 可以使用另一个 <canvas> 元素作为你的图片源。

  • ImageBitmap 这是一个高性能的位图,可以低延迟地绘制,它可以从上述的所有源以及其它几种源中生成。

这些源统一由CanvasImageSource类型来引用。

有几种方式可以获取到我们需要在canvas上使用的图片。

使用相同页面内的图片

  • document.images集合

  • document.getElementsByTagName()方法

  • 如果你知道你想使用的指定图片的ID,你可以用document.getElementById()获得这个图片

使用其它域名下的图片

...未完待续

转载于:https://juejin.im/post/5a3787e9f265da432003584a

Canvas快速入门知识点相关推荐

  1. redis原理快速入门知识点总结

    redis原理快速入门知识点总结 1. 项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果? 为什么用缓存? 1.高性能: 一些需要复杂操作耗时查出来的结果,且确定后面不怎么变化,但是 ...

  2. Gin 快速入门知识点总结(奇淼)

    Gin 快速入门总结 各种请求方式获取参数 绑定参数和参数验证 文件的上传和返回 读取文件 给前端返回文件 中间件和路由分组 分组 中间件 日志和日志格式 使用 GORM 进行数据库操作 GORM 结 ...

  3. canvas快速入门(三)canvas实现笔触绘画案例

    实现代码 <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8& ...

  4. Roblox 快速入门知识点整理

    1.编辑器下载 官网链接: https://www.roblox.cn 左边是编辑器:右边是玩游戏的:国服只支持手机端 2.编辑状态,摄像头移动 wasd 控制 前后左右 eq 上升和 下降 鼠标右键 ...

  5. 快速入门html、css和javascript

    基本标签(a.p.img.li.table.div.span).表单标签.iframe.frameset.样式 1:Html (Hypertext Markup Language) 超文本标记语言 2 ...

  6. Expression Blend实例中文教程(4) - 布局控件快速入门Canvas

    上一篇,我介绍了Silverlight控件被分为三种类型, 第一类: Layout Controls(布局控件) 第二类: Item Controls (项目控件) 第三类: User Interac ...

  7. Unity快速入门之一 3D基础概念、Camera、Canvas RenderMode的几种方式对比

    最近要给公司的小伙伴做Unity入门,针对几个常用的知识进行快速入门介绍. Unity快速入门之一 3D基础概念.Camera.Canvas RenderMode的几种方式对比_翕翕堂 Unity快速 ...

  8. 编写递归下降语法分析器_Python3知识点流程控制、迭代器、生成器快速入门

    流程控制 if 控制 if 表达式1: 语句if 表达式2: 语句elif 表达式3: 语句else: 语句elif 表达式4: 语句else: 语句 1.每个条件后面要使用冒号 :,表示接下来是满足 ...

  9. 总觉得该分享点什么!零基础小白如何快速入门前端?

    1.首先零基础学习前端先要有一个计划,了解前端要学习哪些技术. 2.做好自己的时间规划,如何快速入门前端那肯定是需要不断的提高自己的学习效率,学习过程总尽量把手机调至静音给自己一个安静的学习环境和氛围 ...

最新文章

  1. Xilinx FFT IP core V9.0的介绍和使用
  2. 【Kotlin】Kotlin 中使用 ButterKnife ( 仅用于适配 Kotlin 语言 | 不推荐新项目使用 )
  3. 运行Qt release版本时出现“丢失QtCore4.dll”错误
  4. SpringCloudGateway静态路由配置
  5. NOIP2007 树网的核
  6. [转]C#网络编程(同步传输字符串) - Part.2
  7. SMS短信通API下行接口参数
  8. Kubernetes教程 - Kubernetes综合指南(Use Guide)
  9. axure9数据统计插件_数据分析太棘手?常用8大统计软件解决难题!
  10. JavaScript中的this详解
  11. 图像处理中的直方图与均衡化
  12. 二学位计算机基础试题,计算机基础知识附试题().doc
  13. 小米盒子服务器无信号,小米小盒子连接HDMI无信号怎么办?
  14. 【Redis】Redis配置文件详解(很全)
  15. 情感分类(Sentiment Classification)
  16. 数据挖掘实例1:亲和性分析示例(代码、注释、运行结果)
  17. 给硬件工程师的入门课-硬件工程师的基本素质和技能要求
  18. cts测试linux指令skip,CTS测试命令详细
  19. 体验Android:个人所得税计算器 含源码
  20. 多种好看好玩的词云例子Example

热门文章

  1. spring MVC中定义异常页面
  2. IDEA下项目打包成jar,并通过cmd命令调用
  3. 【C/C++】符号常量 常变量
  4. JAVA b2b2c多用户商城系统源码-服务发现服务端EurekaServer微服务
  5. 1117 Eddington Number
  6. Webpack 4.X 从入门到精通 - 第三方库(六)
  7. C# 合并多个不同格式文档为一个PDF
  8. Office365 PowerShell打开邮箱审计功能
  9. Android Audio Focus的应用(requestAudioFocus)
  10. pintos project (2) Project 1 Thread -Mission 1 Code