复杂的内容都是有简单的线条结合而成的,想要绘制出复杂好看的内容先从画直线开始

canvas绘制直线先认识几个函数

beginPath();开始一条路径,或重置当前的路径

moveTo(x,y);用于规定直线的起点坐标

lineTo(x,y);用于规定直线的终点坐标

closePath();方法创建从当前点到开始点的路径

stroke();方法会实际地绘制出通过 moveTo() 和 lineTo() 方法定义的路径。默认颜色是黑色

利用上面的函数就可以简单的画出直线了

代码

<canvas id="canvas" style="border: 1px solid #000;">当前浏览器不支持canvas,请更换浏览器再试</canvas>
<script type="text/javascript">
window.onload = function() { var canvas = document.getElementById("canvas");
   canvas.width = 1024;//设置canvas宽高
   canvas.height = 768;
   var context = canvas.getContext("2d");
context.beginPath();
   context.moveTo(100, 100);
   context.lineTo(700, 700);
context.closePath();
context.stroke();
}
</script>

接下来个直线添加点样式:

lineWidth;属性设置或返回当前线条的宽度,以像素计

strokeStyle;属性设置或返回用于笔触的颜色、渐变或模式

fillStyle;属性设置或返回用于填充绘画的颜色、渐变或模式

fill();方法填充当前的图像(路径)。默认颜色是黑色

JavaScript代码如下:

<canvas id="canvas" style="border: 1px solid #000;">当前浏览器不支持canvas,请更换浏览器再试</canvas>
<script type="text/javascript">
window.onload = function() { var canvas = document.getElementById("canvas");
  canvas.width = 1024;//设置canvas宽高
  canvas.height = 768;
  var context = canvas.getContext("2d");
context.beginPath();
  context.moveTo(100, 100);
  context.lineTo(700, 700);
context.closePath();
     context.lineWidth = 5;
    context.strokeStyle = "red";
context.stroke();
}
</script>

会绘制直线后我们接着来绘制一些图像,要绘制图像也是使用lineTo(x,y),绘制三角形,代码如下

<canvas id="canvas" style="border: 1px solid #000;">当前浏览器不支持canvas,请更换浏览器再试</canvas>
<script type="text/javascript">
window.onload = function() { var canvas = document.getElementById("canvas");
   canvas.width = 1024;//设置canvas宽高
   canvas.height = 768;
   var context = canvas.getContext("2d");
context.beginPath();
   context.moveTo(100, 100);
   context.lineTo(700, 700);
     context.lineTo(100, 700);
     context.lineTo(100, 100);
context.closePath();
context.lineWidth = 5;
      context.strokeStyle = "red";
context.stroke();
}
</script>

这个时候在是实现一些复杂的图像,七巧板:

<!DOCTYPE html>
<html> <head>
<meta charset="UTF-8">
<title>canvas绘制七巧板</title>
</head> <body>
<canvas id="canvas" style="border: 1px solid #aa;display: block;margin: 50px auto;">
当前浏览器不支持Canvas,请更换浏览器再试
</canvas> <script type="text/javascript">
var tangram = [
{p: [{x: 0,y: 0}, {x: 800,y: 0}, {x: 400,y: 400}],color: "#caff76"},
{p: [{x: 0,y: 0}, {x: 400,y: 400}, {x: 0,y: 800}],color: "#67becf"},
{p: [{x: 800,y: 0}, {x: 800,y: 400}, {x: 600,y: 600}, {x: 600,y: 200}],color: "#ef3d61"},
{p: [{x: 600,y: 200}, {x: 600,y: 600}, {x: 400,y: 400}],color: "#f9f51a"},
{p: [{x: 400,y: 400}, {x: 600,y: 600}, {x: 400,y: 800}, {x: 200,y: 600}],color: "#a594c0"},
{p: [{x: 200,y: 600}, {x: 400,y: 800}, {x: 0,y: 800}],color: "#fa8ecc"},
{p: [{x: 800,y: 400}, {x: 800,y: 800}, {x: 400,y: 800}],color: "#f6ca29"},
]; window.onload = function() {
var canvas = document.getElementById("canvas"); canvas.width = 800;
canvas.height = 800; var context = canvas.getContext("2d"); for(var i = 0; i < tangram.length; i++) {
draw(tangram[i], context)
}
} function draw(plece, cxt) {
cxt.beginPath();
cxt.moveTo(plece.p[0].x, plece.p[0].y);
for(var i = 1; i < plece.p.length; i++) {
cxt.lineTo(plece.p[i].x, plece.p[i].y);
}
cxt.closePath();
cxt.fillStyle = plece.color;
cxt.fill(); cxt.strokeStyle = "black";
cxt.lineWidth = 3;
cxt.stroke();
}
</script>
</body> </html>

canvas基础入门(二)绘制线条、三角形、七巧板的更多相关文章

  1. Swift语法基础入门二(数组, 字典, 字符串)

    Swift语法基础入门二(数组, 字典, 字符串) 数组(有序数据的集) *格式 : [] / Int / Array() let 不可变数组 var 可变数组 注意: 不需要改变集合的时候创建不可变 ...

  2. C#基础入门 二

    C#基础入门 二 循环语句 与C语言中用法相同. continue:结束本次循环(continue)后面的代码不再执行,进入下次循环(通常与if连用). 数组 一维数组定义:int[] intArra ...

  3. HTML5 Canvas——基础入门

    认识canvas html5的新标签 <canvas>标签只是图像容器,必须使用js来绘制图形 可以通过多种方法使用canvas绘制路径,盒,圆,字符以及添加图像 canvas画布 < ...

  4. JAVA之Mybatis基础入门二 -- 新增、更新、删除

    上一节说了Mybatis的框架搭建和简单查询,这次我们来说一说用Mybatis进行基本的增删改操作: 一. 插入一条数据 1.首先编写USER.XML(表的xml)使用insert元素,元素写在map ...

  5. canvas基础入门(一)canvas的width、height于css样式中的宽高区别

    canvas的width.height于css样式中的宽高对画布的内容显示是有所区别的 1.在canvas标签下调用他的width和height,而且是没有单位的宽高,这种指定canvas大小的方法也 ...

  6. C#学习笔记---基础入门(二)

    枚举 枚举是被命名的整型常数的集合:枚举类型的变量只有赋值后才能使用:不同枚举中的枚举值可以重名:可以自定义枚举值. enum Playstates {            跑, 跳,下滑,左转,右 ...

  7. Linux 基础入门二

    1.远程连接  ssh协议:secure shell  ~]# ss -tnl 查看系统是否监听在tcp协议的22号接口:  ~]# ip addr list 或者 ifconfig 查看ip地址 确 ...

  8. Mybatis框架基础入门(二)--架构简介

    mybatis配置 SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息. mapper.xml文件即sql映射文件,文件中配置了操作数据库的 ...

  9. canvas基础学习(一)

    一.概述 canvas它和其它的HTML5标签的使用基本一致,但是它相当于在浏览器中建立一个画布,可以再这个画布上画图.创建动画甚至是3D游戏.由于canvas要适配不同终端的分辨率,所以尽可能的在标 ...

随机推荐

  1. WINFORM 开发模式,窗体回到默认样式方法。

    软件分为3类   客户端  网站应用  app WINFORM 主要用来只做客户端应用程序.C/S 客户端程序很重要的特点:可以操作用户电脑上的文件,执行在客户端上,电脑的配置越高执行就越流畅. 在p ...

  2. ZROI2018提高day5t3

    传送门 分析我们可以根据性质将这个序列构造成一个环:0,a[1~n],0,a[n~1] 这中间的0是为了起间隔作用的. 我们又知道b[i]=a[i-1]^a[i+1] c[i]=b[i-1]^b[i+ ...

  3. Jsp入门第一天

    1. JSP: 1). WHY: JSP 是简 Servlet 编写的一种技术, 它将 Java 代码和 HTML 语句混合在同一个文件中编写,只对网页中的要动态产生的内容采用 Java 代码来编写, ...

  4. Bootstrap 的 Collapse

    一.简介 Collapse 插件为 HTML 标签提供折叠.展开行为,依赖 transition.js(bootstrap.js 文件中已包含). 二.实现机制 实现 Collapse 效果需要: 一 ...

  5. Iterator主要有三个方法:hasNext()、next()、remove()详解

    一.Iterator的API 关于Iterator主要有三个方法:hasNext().next().remove() hasNext:没有指针下移操作,只是判断是否存在下一个元素 next:指针下移, ...

  6. python3如何打印进度条

    Python3 中打印进度条(#)信息: 代码: import sys,time for i in range(50): sys.stdout.write("#") sys.std ...

  7. 服务器部署php项目

    windows服务器   首先打开开始菜单,点击运行.   然后输入mstsc,确定   输入你的服务器IP,点击连接   这里选择 是   然后就到了登录界面,输入用户名和密码就可以了 linux服 ...

  8. Ready api groovy script 参数化

    def token_type =context.expand ('${#Project#token_type}') def access_token = context.expand('${#Proj ...

  9. sql_trace基本用法

    sql_trace是oracle提供的一个非常好的跟踪工具,主要用来检查数据库的异常情况,通过跟踪数据库的活动,找到有问题的语句. 一.概述:    SQL_TRACE是Oracle的一个非常强大的工 ...

  10. P4768 [NOI2018]归程

    \(\color{#0066ff}{题目描述}\) 本题的故事发生在魔力之都,在这里我们将为你介绍一些必要的设定. 魔力之都可以抽象成一个 n 个节点.m 条边的无向连通图(节点的编号从 1 至 n) ...