基本

  1. 支持ie 9+,firefox,opera,chrome,safari
  2. html:

    <canvas id="fir_canvas" width="400" height="400">
  3. Canvas API 使用了路径的表示法。但是,路径由一系列的方法调用来定义,比如调用 beginPath() 和 arc() 方法。一旦定义了路径,其他的方法,如 fill(),都是对此路径操作。绘图环境的各种属性,比如 fillStyle,说明了这些操作如何使用

方法

const canvas = document.getElementById('fir_canvas');
const ctx = canvas.getContent('2d');
  1. getContext(“2d”) 对象是内建的 HTML5 对象,拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。
  2. dom
  3. clearRect(x,y,width,height) 清空给定矩形内的指定像素

绘制路径(线)和线形成的封闭图形

ctx.strokeStyle = “#0000ff”; // 线条的颜色
ctx.lineWidth = 8; // 线条的粗细

  1. 一条线

    ctx.moveTo(100,100);
    ctx.lineTo(500,500);
    ctx.stroke(); // 绘制
  2. 一条拐弯的线(例子效果为一个折形)

    ctx.moveTo(2, 2);
    ctx.lineTo(16, 12);
    ctx.lineTo(2, 24);
    ctx.stroke();

    效果:

  3. 例子二折形闭合成一个三角形

    ctx.moveTo(20, 20);
    ctx.lineTo(160, 120);
    ctx.lineTo(20, 240);
    ctx.lineTo(20, 20);
    ctx.lineWidth = 8;
    ctx.stroke();

    路径回到起始点即可,但这样在设置线条粗细过粗的时候会有一些问题:

    所以当绘制封闭图形时应该使用标准方法closePath(),见例五。

  4. 多条例子二 beginPath()

    beginPath()方法,就会对之前绘制的路径进行清空,但不会回到(0,0)原点。

    // 共用的样式写在beginPath()外面
    ctx.beginPath();
    ctx.moveTo(2, 2);
    ctx.lineTo(16, 12);
    ctx.lineTo(2, 24);
    ctx.lineTo(2, 2);
    ctx.stroke(); ctx.beginPath();
    ctx.moveTo(32, 2);
    ctx.lineTo(46, 12);
    ctx.lineTo(32, 24);
    ctx.lineTo(32, 2);
    ctx.stroke(); ctx.beginPath();
    ctx.moveTo(62, 2);
    ctx.lineTo(76, 12);
    ctx.lineTo(62, 24);
    ctx.lineTo(62, 2);
    ctx.strok 大专栏  canvas基本eStyle = "#0000ff";
    ctx.stroke();

    效果

  5. 封闭图形标准写法

    ctx.beginPath();
    ctx.moveTo(62, 2);
    ctx.lineTo(76, 12);
    ctx.lineTo(62, 24);// 省略了最后回到原点那句
    ctx.closePath();
    ctx.stroke();

用beginPath()第一句可以用moveTo()也可以用lineTo()
不用beginPath()得用moveTo();

  1. 画矩形 正方形 (因为必须有宽高) strokeRect(x, y, width, height)

    strokeRect() 方法绘制矩形(不填色)。笔触的默认颜色是黑色。

    使用 strokeStyle 属性来设置笔触的颜色、渐变或模式

    ctx.lineWidth = 8;
    ctx.strokeStyle = "#333";
    ctx.strokeRect(10,10,200,200);

    效果

  2. lineCap 属性 定义线段开头和结尾的形状

    butt(默认值),round,square

    效果(从上到下依次为butt round square)

    round只对线条的开头和结尾处有效果,对线段之间的连接处没有作用

  3. lineJoin 属性 miterLimit 属性 线条与线条之间的连接方式

    lineJoin: miter(默认值,尖角) bevel(衔接) round(圆角)

    当lineJoin属性值是miter时,miterLimit起作用,默认值为10。

填充 fill() fillStyle | fillRect()

  1. 先填充,再画边框

    ctx.beginPath();
    ctx.lineTo(100, 100);
    ctx.lineTo(200, 100);
    ctx.lineTo(200, 200);
    ctx.lineTo(100, 200);
    ctx.closePath();
    ctx.lineWidth = 8;
    ctx.fillStyle = "#ddd";
    ctx.fill();
    ctx.stroke();

    效果

  2. fillRect(x,y,width,height)

    绘制“已填色”的矩形(因为必须有宽高)。默认的填充颜色是黑色。

    使用 fillStyle 属性来设置用于填充绘图的颜色、渐变或模式。如果不设置fillStyle则使用默认的黑色。

    在例六的基础上

    ctx.lineWidth = 8;
    ctx.strokeStyle = "#333";
    ctx.fillStyle = "antiquewhite";
    ctx.fillRect(10,10,200,200);
    ctx.strokeRect(10,10,200,200);

    效果

canvas基本的更多相关文章

  1. html5 canvas常用api总结(三)--图像变换API

    canvas的图像变换api,可以帮助我们更加方便的绘画出一些酷炫的效果,也可以用来制作动画.接下来将总结一下canvas的变换方法,文末有一个例子来更加深刻的了解和利用这几个api. 1.画布旋转a ...

  2. 【探索】利用 canvas 实现数据压缩

    前言 HTTP 支持 GZip 压缩,可节省不少传输资源.但遗憾的是,只有下载才有,上传并不支持.如果上传也能压缩,那就完美了.特别适合大量文本提交的场合,比如博客园,就是很好的例子. 虽然标准不支持 ...

  3. 简单入门canvas - 通过刮奖效果来学习

    一 .前言 一直在做PC端的前端开发,从互联网到行业软件.最近发现移动端已经成为前端必备技能了,真是不能停止学习.HTML5新增的一些东西,canvas是用的比较多也比较复杂的一个,简单的入门了一下, ...

  4. 获取Canvas当前坐标系矩阵

    前言 在我的另一篇博文 Canvas坐标系转换 中,我们知道了所有的平移缩放旋转操作都会影响到画布坐标系.那在我们对画布进行了一系列操作之后,怎么再知道当前矩阵数据状态呢. 具体代码 首先请看下面的一 ...

  5. Canvas坐标系转换

    默认坐标系与当前坐标系 canvas中的坐标是从左上角开始的,x轴沿着水平方向(按像素)向右延伸,y轴沿垂直方向向下延伸.左上角坐标为x=0,y=0的点称作原点.在默认坐标系中,每一个点的坐标都是直接 ...

  6. Canvas绘图之平移translate、旋转rotate、缩放scale

    画布操作介绍 画布绘图的环境通过translate(),scale(),rotate(), setTransform()和transform()来改变,它们会对画布的变换矩阵产生影响. 函数 方法 描 ...

  7. 用html5的canvas和JavaScript创建一个绘图程序

    本文将引导你使用canvas和JavaScript创建一个简单的绘图程序. 创建canvas元素 首先准备容器Canvas元素,接下来所有的事情都会在JavaScript里面. <canvas ...

  8. html5标签canvas函数drawImage使用方法

    html5中标签canvas,函数drawImage(): 使用drawImage()方法绘制图像.绘图环境提供了该方法的三个不同版本.参数传递三种形式: drawImage(image,x,y):在 ...

  9. 使用 JavaScript 和 canvas 做精确的像素碰撞检测

    原文地址:Pixel accurate collision detection with Javascript and Canvas 译者:nzbin 我正在开发一个需要再次使用碰撞检测的游戏.我通常 ...

  10. H5项目开发分享——用Canvas合成文字

    以前曾用Canvas合成.裁剪.图片等<用H5中的Canvas等技术制作海报>.这次用Canvas来画文字. 下图中"老王考到驾照后"这几个字是画在Canvas上的,与 ...

随机推荐

  1. Java远程调用Linux脚本

    参考:http://blog.csdn.net/xiao_jun_0820/article/details/26254813  http://blog.csdn.net/a19881029/artic ...

  2. 小白学习之pytorch框架(5)-多层感知机(MLP)-(tensor、variable、计算图、ReLU()、sigmoid()、tanh())

    先记录一下一开始学习torch时未曾记录(也未好好弄懂哈)导致又忘记了的tensor.variable.计算图 计算图 计算图直白的来说,就是数学公式(也叫模型)用图表示,这个图即计算图.借用 htt ...

  3. Linux shell脚本 基础

    一.shell中三个引号的用法 1.单引号:所见即所得 例如:var=123 var2='${var}123' echo var2 var2结果为${var}123 2.双引号:输出引号中的内容,若存 ...

  4. 吴裕雄--天生自然 PYTHON3开发学习:循环语句

    n = 100 sum = 0 counter = 1 while counter <= n: sum = sum + counter counter += 1 print("1 到 ...

  5. SQL服务器攻击总结-注入

    查库选择convert(int,db_name())sysobjects 查当前表id,从sysobjects中选择id,xtype ='u'//此处要记录下数据库的id syscolumns查表对应 ...

  6. android viewgrop(实现了事件监听/手动滑动)

    package com.example.myviewgroup; import android.content.Context;import android.os.Handler;import and ...

  7. Spring Boot使用Liquibase最佳实践

    Liquibase问题 随着项目的发展,一个项目中的代码量会非常庞大,同时数据库表也会错综复杂.如果一个项目使用了Liquibase对数据库结构进行管理,越来越多的问题会浮现出来. ChangeSet ...

  8. python编程练习题目

    github上面的一个项目,分为level1,level2,level3 三个等级的难度. 题目地址 一部分中文翻译 python教程 剑指offer,python3实现 python进阶 练习题1: ...

  9. RDD(八)——缓存与检查点

    RDD通过persist方法或cache方法可以将前面的计算结果缓存,默认情况下 persist() 会把数据以序列化的形式缓存在 JVM 的堆空间中. 但是并不是这两个方法被调用时立即缓存,而是触发 ...

  10. JVM相关面试题

    1.JVM 基本机构 1.1 类加载子系统负责从文件系统或者网络中加载Class信息,加载的类信息存放于一块称为方法区的内存空间.除了类的信息外,方法区中可能还会存放运行时常量池信息,包括字符串字面量 ...