认识canvas

  • html5的新标签

  • <canvas>标签只是图像容器,必须使用js来绘制图形

  • 可以通过多种方法使用canvas绘制路径,盒,圆,字符以及添加图像

canvas画布

  <!-- 注意: 标签通常需要指定一个id属性 (脚本中经常引用), width 和 height 属性定义的画布的大小. -->
<canvas id="myCanvas" width="600" height="600" style="border: 1px solid red;background-color: pink;"> </canvas>

矩形

  <!-- 1.矩形 -->
<script type="text/javascript">
/*获取元素*/
var c = document.getElementById("myCanvas");
/*获取绘图工具*/
var ctx = c.getContext("2d");
/* 设置fillStyle属性可以是CSS颜色,渐变,或图案。fillStyle 默认设置是#000000(黑色)。 */
ctx.fillStyle = "#ccc";
/* fillRect(x,y,width,height) 方法定义了矩形当前的填充方式。 */
ctx.fillRect(50, 50, 200, 100);
</script>

折线

  <!-- 2.折线 -->
<script type="text/javascript">
/*获取元素*/
var c = document.getElementById("myCanvas");
/*获取绘图工具*/
var ctx = c.getContext("2d");
/* 起点 */
ctx.moveTo(10, 10);
/* 移动 */
ctx.lineTo(200, 100);
ctx.lineTo(400, 400);
/* 线宽 */
ctx.lineWidth = 20;
/* 线条颜色 */
ctx.strokeStyle = 'red';
/* 使用 stroke() 方法来绘制线条 */
ctx.stroke();
</script>
  <!-- 2.折线 -->
<script type="text/javascript">
/*获取元素*/
var c = document.getElementById("myCanvas");
/*获取绘图工具*/
var ctx = c.getContext("2d");
/* 起点 */
ctx.moveTo(10, 10);
/* 移动 */
ctx.lineTo(200, 100);
ctx.lineTo(400, 400);
/* 线宽 */
ctx.lineWidth = 20;
/* 线条颜色 */
ctx.strokeStyle = 'red';
/* 使用 stroke() 方法来绘制线条 */
ctx.stroke();
</script>

红色填充的三角形

<!-- 3.画一个红色填充的三角形 -->
<script type="text/javascript">
/*获取元素*/
var c = document.getElementById("myCanvas");
/*获取绘图工具*/
var ctx = c.getContext("2d");
/* 起点 */
ctx.moveTo(100,100);
/* 移动 */
ctx.lineTo(200,200);
ctx.lineTo(100,200);
//这样连接的不是很完美
//ctx.lineTo(100,100);
ctx.closePath();//自动闭合 /* 线宽 */
ctx.lineWidth = 20;
/* 线条颜色 */
ctx.strokeStyle = 'green';
/* 使用 stroke() 方法来绘制线条 */
ctx.stroke(); /* 填充 */
ctx.fillStyle = 'red';
//填充
ctx.fill();
</script>

镂空的正方形

我填充了绿色

开启新路径方法:

<script type="text/javascript">
/*获取元素*/
var c = document.getElementById("myCanvas");
/*获取绘图工具*/
var ctx = c.getContext("2d");
/* 1.画一个大的正方 */
ctx.moveTo(100, 100);
ctx.lineTo(300, 100);
ctx.lineTo(300, 300);
ctx.lineTo(100, 300);
ctx.closePath();
/* 边框线宽 */
ctx.lineWidth = 5;
/* 线条颜色 */
ctx.strokeStyle = 'yellow';
/* 使用 stroke() 方法来绘制线条 */
ctx.stroke();
/* 填充 */
ctx.fillStyle = 'purple';
ctx.fill();
//开启新路径 让每一段路径称为独立的路径 可以分别设置样式(填充的样式 描边的样式)
ctx.beginPath();
/* 2.画一个小的正方 */
ctx.moveTo(120, 120);
ctx.lineTo(120, 220);
ctx.lineTo(220, 220);
ctx.lineTo(220, 120);
ctx.closePath();
/* 边框线宽 */
ctx.lineWidth = 5;
/* 线条颜色 */
ctx.strokeStyle = 'red';
/* 使用 stroke() 方法来绘制线条 */
ctx.stroke(); /* 填充 */
ctx.fillStyle = 'green';
ctx.fill(); /* 填充原则:非零环绕规则:
从该区域向外画一条线,与边框相交顺时针+1,逆时针-1,和为0时,不填充
不管是多少个边框嵌套,都要从每个嵌套区域划线一次
*/
</script>

非零环绕原则

<script type="text/javascript">
/*获取元素*/
var c = document.getElementById("myCanvas");
/*获取绘图工具*/
var ctx = c.getContext("2d");
/* 1.画一个大的正方 */
ctx.moveTo(100, 100);
ctx.lineTo(300, 100);
ctx.lineTo(300, 300);
ctx.lineTo(100, 300);
ctx.closePath();
/* 边框线宽 */
ctx.lineWidth = 5;
/* 线条颜色 */
ctx.strokeStyle = 'yellow';
/* 使用 stroke() 方法来绘制线条 */
ctx.stroke(); /* 2.画一个小的正方 */
ctx.moveTo(120, 120);
ctx.lineTo(120, 220);
ctx.lineTo(220, 220);
ctx.lineTo(220, 120);
ctx.closePath();
/* 边框线宽 */
ctx.lineWidth = 5;
/* 线条颜色 */
ctx.strokeStyle = 'red';
/* 使用 stroke() 方法来绘制线条 */
ctx.stroke(); /* 填充 */
/* 填充原则:非零环绕规则:
从该区域向外画一条线,与边框相交顺时针+1,逆时针-1,和为0时,不填充
不管是多少个边框嵌套,都要从每个嵌套区域划线一次
*/
ctx.fillStyle = 'green';
ctx.fill(); </script>

折线过度

 <script type="text/javascript">
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d"); /*红色 10*/
ctx.moveTo(100,100);
ctx.lineTo(200,50);
ctx.lineTo(300,100);
ctx.lineWidth = 10;
ctx.lineCap = 'butt'; //默认 线两端样式 啥也没有
ctx.lineJoin = 'miter'; //没有没有任何样式
ctx.strokeStyle = 'red';
ctx.stroke(); ctx.beginPath(); /*蓝色 15*/
ctx.moveTo(100,200);
ctx.lineTo(200,150);
ctx.lineTo(300,200);
ctx.lineWidth = 15;
ctx.lineCap = 'square'; //线两端样式 方形的
ctx.lineJoin = 'bevel';
ctx.strokeStyle = 'blue';
ctx.stroke(); ctx.beginPath(); /*绿色 20*/
ctx.moveTo(100,300);
ctx.lineTo(200,250);
ctx.lineTo(300,300);
/*线两端样式*/
ctx.lineCap = 'round';//线两端样式 圆帽子
/*线拐点样式*/
ctx.lineJoin = 'round'; ctx.lineWidth = 20;
ctx.strokeStyle = 'green';
ctx.stroke(); </script>

HTML5 Canvas——基础入门的更多相关文章

  1. HTML5 Canvas 画图入门

    HTML5 Canvas 画图入门 HTML5 Canvas 画图入门,仅供学习參考 <!DOCTYPE html> <html> <head> <meta ...

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

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

  3. HTML5 <canvas> 基础学习

    HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成. <canvas> 标签只是图形容器,您必须使用脚本来绘制图形 创建一个画布( ...

  4. HTML5 Canvas基础知识

    HTML5画布 1.创建一个画布         <canvas id="myCanvas" width="200" height="100&q ...

  5. html5 canvas基础10点

    本文主要讲解下一些canvas的基础 1.<canvas id="canvas">若此浏览器不支持canvas会显示该文字</canvas> //创建个ht ...

  6. canvas基础入门(二)绘制线条、三角形、七巧板

    复杂的内容都是有简单的线条结合而成的,想要绘制出复杂好看的内容先从画直线开始 canvas绘制直线先认识几个函数 beginPath():开始一条路径,或重置当前的路径 moveTo(x,y):用于规 ...

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

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

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

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

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

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

随机推荐

  1. Microsoft Windows 实用程序 Sysinternals Utilities Index

    最新页面时间:2017年5月16日 Sysinternals被MS收购--windows internals共近70多个工具集 Sysinternals套件 整套Sysinternals Utilit ...

  2. Phoenix5.0的部署

    官网下载编译好的二进制包 http://phoenix.apache.org/download.html2 上传并解压到指定目录, 再修改目录名称 tar -zxvf apache-phoenix-5 ...

  3. python scipy样条插值函数大全(interpolate里interpld函数)

    scipy样条插值 scipy样条插值1.样条插值法是一种以可变样条来作出一条经过一系列点的光滑曲线的数学方法.插值样条是由一些多项式组成的,每一个多项式都是由相邻的两个数据点决定的,这样,任意的两个 ...

  4. 记录:JAVA抽象类、接口、多态

    JAVA抽象类.接口.多态 1. 多态 定义 多态是同一个行为具有多个不同表现形式或形态的能力.(多态就是同一个接口,使用不同的实例而执行不同操作) 如何实现多态 继承和接口 父类和接口类型的变量赋值 ...

  5. POJ 2823:Sliding Window 单调队列

    Sliding Window Time Limit: 12000MS   Memory Limit: 65536K Total Submissions: 48930   Accepted: 14130 ...

  6. POJ3616:Milking Time

    Milking Time Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5682   Accepted: 2372 Desc ...

  7. 解除TCL电视系统禁止adb安装

    我的问题:tcl电视能使用adb连接成功,但使用adb install安装软件时,提示错误 解决问题如下: $adb shell,输入:1. $setprop persist.tcl.debug.in ...

  8. ROS常见问题(三) 报错are you sure it is properly registered and that the containing library is built?

    报错: [FATAL] [1576042404.913706482]: Failed to create the global_planner/GlobalPlanner planner, are y ...

  9. 一百一十一、SAP的OO-ALV之五,显示ALV表格

    一.在屏幕里面有2部分,(PROCESS BEFORE OUTPUT 用于显示, PROCESS AFTER INPUT用于数据处理).我们创建的display_alv函数, 二.display_al ...

  10. Flink Task 并行度

    并行的数据流 Flink程序由多个任务(转换/运算符,数据源和接收器)组成,Flink中的程序本质上是并行和分布式的. 在执行期间,流具有一个或多个流分区,并且每个operator具有一个或多个ope ...