HTML5 Canvas——基础入门
认识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——基础入门的更多相关文章
- HTML5 Canvas 画图入门
HTML5 Canvas 画图入门 HTML5 Canvas 画图入门,仅供学习參考 <!DOCTYPE html> <html> <head> <meta ...
- 《HTML5 CANVAS基础教程》读书笔记
一.HTML5简介 1.HTML5新特性 1)结构元素:section,header,hgroup,footer,nav,article,aside, 2)内容元素:figure,figcaption ...
- HTML5 <canvas> 基础学习
HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成. <canvas> 标签只是图形容器,您必须使用脚本来绘制图形 创建一个画布( ...
- HTML5 Canvas基础知识
HTML5画布 1.创建一个画布 <canvas id="myCanvas" width="200" height="100&q ...
- html5 canvas基础10点
本文主要讲解下一些canvas的基础 1.<canvas id="canvas">若此浏览器不支持canvas会显示该文字</canvas> //创建个ht ...
- canvas基础入门(二)绘制线条、三角形、七巧板
复杂的内容都是有简单的线条结合而成的,想要绘制出复杂好看的内容先从画直线开始 canvas绘制直线先认识几个函数 beginPath():开始一条路径,或重置当前的路径 moveTo(x,y):用于规 ...
- canvas基础入门(一)canvas的width、height于css样式中的宽高区别
canvas的width.height于css样式中的宽高对画布的内容显示是有所区别的 1.在canvas标签下调用他的width和height,而且是没有单位的宽高,这种指定canvas大小的方法也 ...
- canvas 基础知识整理(二)
html部分: <canvas id="myCanvas" width="800" height="800" ></can ...
- canvas 基础知识整理(一)
canvas这个 HTML 元素是为了客户端矢量图形而设计的.它自己没有行为,但却把一个绘图 API 展现给客户端 JavaScript 以使脚本能够把想绘制的东西都绘制到一块画布上. html的基本 ...
随机推荐
- dmp文件自动分析
dmp文件的分析,可以借助各种工具,比如WinDbg, CDB , NTSD,KD等.Windbg提供了窗口接口,而CDB , NTSD是基于命令行的工具,它们都使用了同样的调试引擎Dbgeng.dl ...
- Apache http 包中的常量
org.apache.* org.apache.http.Consts public static final int CR 13 public static final int HT 9 publi ...
- Java开发程序员必须要学会的linux命令总结
查找文件 find / -name filename.txt 根据名称查找/目录下的filename.txt文件. find . -name "*.xml" 递归查找所有的xml文 ...
- IDEA maven 项目报警告解决(自己的maven配置记录)
IDEA maven 项目报警告解决 应该是JDK版本太低 虽然你装的高但是默认使用maven 默认的 这里要配一下JDK版本 理解不深入只为 自己记录使用 1 配置 仓库为阿里云 配置本地储存j ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-pause
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- Java之集合
前言: 在写程序当中,集合会经常使用,今天听了马老师的课,写一些自己的总结 正文: 集合最重要的就是一个图,一个类,三个知识点,六个接口 说到图就是上面的图,这个图可以帮我们理解这些接口的继承关系 1 ...
- 【php】PHP现代框架代表-Laravel框架核心技术特性
一.php语言特点及发展现状 1.服务端脚本语言,自由度太大 ,一个业务逻辑可言写在模型里,控制器里,也可以单独封装成一个类,甚至可以嵌入到html里,这样势必会造成混乱,业务逻辑散落在各处,尤其对于 ...
- asp.net数据库增删改查demo
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 刷题49. Group Anagrams
一.题目说明 题目是49. Group Anagrams,给定一列字符串,求同源词(包含相同字母的此)的集合.题目难度是Medium. 二.我的做法 题目简单,就不多说,直接上代码: class So ...
- ES6与ES5的继承
ES6 ES6中的类 类与ES5中的构造函数写法类似 区别在于属性要放入constructor中,静态方法和属性实列不会继承 <script> class Person{ height=& ...