HTML5 canvas学习笔记(一)
canvas是HTML5中新增的标签,下面是各浏览器的支持程度:

canvas的默认大小为:宽-300px,高-150px(注意:画布的大小作为canvas标签的行内样式设置,而且是没有“px”单位的哦, 如果你在canvas的css样式中给它设置大小,它只会当做放大比例来处理!),下面这段代码在支持canvas的浏览器中会显示一块400px400px的白色(默认颜色)画布,在不支持canvas的浏览器中只是显示canvas中的文字而已哦。
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Canvas</title>
<style type="text/css">
body{ background:gray;}
#c1{ background:white;}
</style>
</head>
<body>
<!-- 默认宽300, 高150 -->
<canvas id="c1" width="400" height="400">
你的浏览器不支持canvas..
</canvas>
</body>
</html>
下面我们在刚刚创建的画布中画一个带有边框的矩形:
var oC = document.getElementById("c1");
var oGC = oC.getContext('2d'); //创建一个绘图环境
oGC.fillStyle = 'red'; //设置填充样式
oGC.strokeStyle = 'blue'; //设置表框样式
oGC.lineWidth = 10; //设置边框的大小
oGC.lineJoin = 'round'; //端点的样式-圆角
//oGC.lineJoin = 'bevel'; //斜线
oGC.fillRect(50, 50, 100, 100); //在50,50处画一个矩形,并填充它
oGC.strokeRect(50.5, 50.5, 100, 100); //在来画个边框
效果图见:http://runjs.cn/code/vvdbykgz
不知道大家注意到没有,上面代码中最后一行oGC.strokeRect(50.5, 50.5, 100, 100);为什么起始坐标还要加上个0.5像素?这是因为如果边框长度是1像素的话,他从50,50开始两边各占0.5,这个0.5像素给浏览器是不好显示的,所以浏览器只好各边给你一个像素,结果最后就是2个像素的宽度了,这就是为什么要加那0.5个像素了。
我们还可以绘制两个或多个图形, 通过binginPath()和closePath()来控制路径:
var oC = document.getElementById("c1");
var oGC = oC.getContext('2d');
oGC.beginPath();
oGC.moveTo(100, 100);
oGC.lineTo(200, 200);
oGC.lineTo(300, 200);
oGC.closePath();
oGC.stroke();
oGC.beginPath();
oGC.moveTo(100, 200);
oGC.lineTo(200, 300);
oGC.lineTo(300, 300);
oGC.closePath();
oGC.fill();
效果图见:http://runjs.cn/code/lmrv8iuo
通过clearRect()可以清除画布中某个区域的数据,我们再结合定时器可以创建一个方块移动的效果:
var oC = document.getElementById("c1");
var oGC = oC.getContext('2d');
var num = 0;
oGC.fillRect(0, 0, 100, 100);
setInterval(function(){
num++;
oGC.clearRect(0, 0, oC.width, oC.height);
oGC.fillRect(num, num, 100, 100);
}, 30);
效果图见:http://runjs.cn/code/prkby9xp
HTML5 canvas学习笔记(一)的更多相关文章
- canvas学习笔记、小函数整理
http://bbs.csdn.net/topics/391493648 canvas实例分享 2016-3-16 http://bbs.csdn.net/topics/390582151 html5 ...
- canvas学习笔记,实用知识点总结(上)
本博客是本人日常学习笔记,作为重要知识点的总结记录,随笔风格可能更倾向于个人的学习习惯和方式,若对您有帮助十分荣幸,若存在问题欢迎互相学习探讨,前端小白一枚在此恭候. 一.基本使用规则 1.创建画布 ...
- canvas学习笔记(下篇) -- canvas入门教程--保存状态/变形/旋转/缩放/矩阵变换/综合案例(星空/时钟/小球)
[下篇] -- 建议学习时间4小时 课程共(上中下)三篇 此笔记是我初次接触canvas的时候的学习笔记,这次特意整理为博客供大家入门学习,几乎涵盖了canvas所有的基础知识,并且有众多练习案例, ...
- canvas学习笔记(中篇) -- canvas入门教程-- 颜色/透明度/渐变色/线宽/线条样式/虚线/文本/阴影/图片/像素处理
[中篇] -- 建议学习时间4小时 课程共(上中下)三篇 此笔记是我初次接触canvas的时候的学习笔记,这次特意整理为博客供大家入门学习,几乎涵盖了canvas所有的基础知识,并且有众多练习案例, ...
- canvas学习笔记(上篇)-- canvas入门教程 -- canvas标签/方块/描边/路径/圆形/曲线
[上篇] -- 建议学习时间4小时 课程共(上中下)三篇 此笔记是我初次接触canvas的时候的学习笔记,这次特意整理为博客供大家入门学习,几乎涵盖了canvas所有的基础知识,并且有众多练习案例, ...
- [HTML5 Canvas学习] 基础知识
HTML5 canvas元素通过脚本语言(通常是Javascript) 绘制图形, 它仅仅是一个绘图环境,需要通过getContext('2d')方法获得绘图环境对象,使用绘图环境对象在canvas元 ...
- HTML5硕士学习笔记
如今,该集团经过培训的同事给大家HTML5,他出席了两个5训练日,大概过一次给我们,在一个很形象.同事们更感兴趣的是. 课后共享所有的课件.在热情的新技术,我想工作有一个良好的早晨,我决定重新学习课件 ...
- canvas学习笔记(一)-认识canvas
canvas是html5新增的一个标签,主要用于图形的绘制.我们可以把它理解为是浏览器给我们提供了一个画板,至于要绘制怎样的画卷,就看神笔马良你的主意了.而在canvas上绘制图形使用的笔,就是js了 ...
- canvas学习笔记一
为了研究pixi库,就顺带从头到位学习下canvas吧 判断支持力度 var webgl = (function() { try { var canvas = document.createEleme ...
随机推荐
- Swift和Objective-C混编注意事项
前言 Swift已推出数年,与Objective-C相比Swift的语言机制及使用简易程度上更接地气,大大降低了iOS入门门槛.当然这对新入行的童鞋没来讲,的确算是福音,但对于整个iOS编程从业者来讲 ...
- nodejs中异常错误的处理方式
因为nodejs是单线程的,所以一旦发生错误或异常,如果没有及时被处理整个系统就会崩溃.错误异常有两种场景的出现,一种是代码运行中throw new error没有被捕获,另一种是Promise的失败 ...
- 克隆虚机网卡出现 Device eth0 does not seem to be present, delaying initialization 错误
错误原因 克隆的Linux系统在新的机器上运行,新服务器网卡物理地址已经改变.而/etc/udev/rules.d/70-persistent-net.rules这个文件确定了网卡和MAC地址的 ...
- [LeetCode] Battleships in a Board 平板上的战船
Given an 2D board, count how many different battleships are in it. The battleships are represented w ...
- 初探Socket
使用Socket Socket是两台主机之间的一个连接,它可以完成7个操作. 连接远程机器 发送数据 接收数据 关闭连接 绑定端口 监听入站数据 在绑定端口上接受来自远程机器的连接 Java中的Soc ...
- Android开发之import org.apache.http
在build.gradle(app)中添加一下依赖: android { useLibrary 'org.apache.http.legacy' } dependencies { compile 'o ...
- JSP中编译指令include与动作指令include的区别
include指令是编译阶段的指令,即include所包含的文件的内容是编译的时候插入到JSP文件中,JSP引擎在判断JSP页面未被修改, 否则视为已被修改.由于被包含的文件是在编译时才插入的,因此如 ...
- Java控制图片按比例缩放- (注意内存释放)
package mytiny.com.common; import java.awt.Color;import java.awt.Graphics2D;import java.awt.Image;im ...
- 【BZOJ 3876】【AHOI 2014】支线剧情
http://www.lydsy.com/JudgeOnline/problem.php?id=3876 这道题每条支线的意思是每条边... 那么每条边的下界设为1就行了. 这样建出一个DAG,每条边 ...
- WCF、Web API、WCF REST、Web Service比较
原文地址:http://www.dotnet-tricks.com/Tutorial/webapi/JI2X050413-Difference-between-WCF-and-Web-API-and- ...