主要使用的API有:

  • context.moveTo(x,y) 声明线的起始坐标
  • context.lineTo(x,y) 声明线的下一个坐标
  • context.fillStyle  声明线的填充颜色
  • context.fill()  填充
  • context.strokeStyle 声明线的颜色
  • context.stroke() 绘制直线
  • context.beginPath() 声明线的开始
  • context.closePath() 声明线的结束
        var canvas = document.getElementById('canvas');
canvas.width = 1024;
canvas.height = 768; if (canvas.getContext('2d')) {
var context = canvas.getContext('2d');
console.log(context); // CanvasRenderingContext2D // 使用contex进行绘制 // draw a line
context.moveTo(100, 100); // 声明起点,坐标轴是以canvas的左上角为原点
context.lineTo(700, 700); // 声明终点
context.lineTo(100, 700);
context.lineTo(100, 100); context.fillStyle = 'rgb(2, 100, 30)';
context.fill(); // 填充 context.lineWidth = 5; // 声明线的宽度
context.strokeStyle = "red"; // 声明线的颜色
context.stroke(); // 绘制直线 // draw a another line
context.moveTo(200, 100);
context.lineTo(700, 600);
context.strokeStyle = 'black'; // 线条颜色会覆盖之前声明的颜色
context.stroke();
} else {
alert('当前浏览器不支持Canvas,请更换浏览器后再试');
}

结果:

先设置了线的颜色为红色,再设置线的颜色为黑色,但是最后结果,画出来都是黑色的。这是为什么呢?

因为canvas 绘图是基于状态的,下面设置的颜色状态会覆盖上面的设置状态。

那么如何才能画不同颜色的线呢?

要在每一个单独的path前后,使用 context.beginPath() 和 context.closePath()。

        // draw a line
context.beginPath();
context.moveTo(100, 100); // 声明起点,坐标轴是以canvas的左上角为原点
context.lineTo(700, 700); // 声明终点
context.lineTo(100, 700);
context.lineTo(100, 100);
context.closePath();
context.fillStyle = 'rgb(2, 100, 30)';
context.fill(); // 填充 context.lineWidth = 5; // 声明线的宽度
context.strokeStyle = "red"; // 声明线的颜色
context.stroke(); // 绘制直线 // draw a another line
context.beginPath();
context.moveTo(200, 100);
context.lineTo(700, 600);
context.closePath(); context.strokeStyle = 'black'; // 线条颜色会覆盖之前声明的颜色
context.stroke();

结果:

Canvas入门02-绘制直线的更多相关文章

  1. canvas教程(二) 绘制直线

    经过 canvas 教程(一) 简介 我们知道了 canvas 的一些基本情况 而本次是给大家带来直线的绘制 canvas 中,基本图形有两种,一种是直线,还有一种是曲线 但是无论是直线还是曲线,我们 ...

  2. canvas教程(三) 绘制曲线

    经过 canvas 教程(二) 绘制直线 我们知道了 canvas 的直线是怎么绘制的 而本次是给大家带来曲线相关的绘制 绘制圆形 在 canvas 中我们可以使用 arc 方法画一个圆 contex ...

  3. Canvas入门(1):绘制矩形、圆、直线、曲线等基本图形

    来源:http://www.ido321.com/968.html 一.Canvas的基础知识 Canvas是HTML 5中新增的元素,专门用于绘制图形.canvas元素就相当于一块“画布”,一块无色 ...

  4. 封装 用canvas绘制直线的函数--面向对象

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. canvas绘制直线

    HTML5 <canvas>元素用于图形的绘制,该元素只是图形容器,必须使用javascript脚本绘制图形创建一个画布:<canvas id="myCanvas" ...

  6. 学习Canvas绘图与动画基础 绘制直线(二)

    1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="U ...

  7. Canvas入门到高级详解(上)

    神奇的 canvas--AICODER 全栈培训 IT 培训专家 一.canvas 简介 1.1 什么是 canvas?(了解) 是 HTML5 提供的一种新标签 <canvas>< ...

  8. Canvas入门(2):图形渐变和图像形变换

    来源:http://www.ido321.com/986.html 一.图形渐变(均在最新版Google中测试) 1.绘制线性渐变 1: // 获取canvas 的ID 2: var canvas = ...

  9. Html5新特性 &lt;canvas&gt;画板画直线

     以下样例为用canvas标签画多条直线 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" & ...

随机推荐

  1. Jmeter性能测试--自己看到的博客收集

    性能测试的场景:https://www.cnblogs.com/little-little-bai/p/10338156.html

  2. c语言日志打印

    #include <stdio.h> #include <stdlib.h> #include <time.h> #include <stdarg.h> ...

  3. 【Spring】Spring-Session-Data-Redis实现session共享

    前言 在开发中遇到一个关于用户体验的问题,每次当运维进行更新重启服务器时,都会导致会员平台中已登录的用户掉线.这是因为每个用户的会话信息及状态都是由session来保存的,而session对象是由服务 ...

  4. WIN 7 的vs2008 试用版评估期结束的解决方法

    1. 在VS2008安装目录下把Setup/setup.sdb文件中的 [Product Key] T2CRQGDKBVW7KJR8C6CKXMW3D 改成 [Product Key] PYHYPWX ...

  5. The Preliminary Contest for ICPC Asia Shanghai 2019 L. Digit sum

    题目:https://nanti.jisuanke.com/t/41422 思路:预处理 #include<bits/stdc++.h> using namespace std; ][]= ...

  6. 安装npm install时,长时间停留在fetchMetadata: sill

    更换仓库地址:npm config set registry https://registry.npm.taobao.org 查询当前仓库地址:npm config get registry 或 np ...

  7. 一个超详细vue无限滚动vue-infinite-scroll插件的配置及使用详解

    开发中总会遇到这种下拉加载的设计方案,Vue实现下拉加载最佳方案自然是使用vue-infinite-scroll来实现.接下来我们一起看下它的配置及使用方式. 首先我们先了解下他的配置参数: v-in ...

  8. 【商业智能VS人工智能】

    什么是智能? 从感觉到记忆到思维这一过程,称为“智慧”,智慧的结果就产生了行为和语言,将行为和语言的表达过程称为“能力”,两者合称“智能”,将感觉.去记.回忆.思维.语言.行为的整个过程称为智能过程, ...

  9. linux文件重定向

    1:标准输出:2:错误输出 1,exec启动一个新的shell将STDOUT文件描述符重定向到文件 #!/bin/shecho "test exec..."exec > ou ...

  10. linux C 加载so文件 指定路径

    在Linux C中动态加载.so文件用dlopen("libdemo.so", RTLD_NOW); 但是默认的so搜索目录不包括当前程序目录,所以必须复制到系统的so目录 才能运 ...