html 5 canvas画布整理
1. 创建canvas画布
<canvas id="myCanvas" width="800" height="800" ></canvas>
注意:(1)width、height,这两个属性定义了canvas元素宽和高,从而相应的定义了2D渲染上下文的尺寸。
(2)2D渲染上下文的尺寸默认值:宽300像素、高150像素。
2. 坐标
左上角为原点(0,0)
右移:x坐标增加
下移:y坐标增加
3. 2D渲染上下文(真正绘制图形的地方)
<script type="text/javascript"> var canvas = document.getElementById('myCanvas'); // 获取canvas的ID var context =canvas.getContext("2d");</script>第二部分:矩形
1.绘制矩形
方法:context.fillRect(x,y,width,height);
2.绘制描边矩形
方法:strokeRect(x,y,width,height)
实例:
<script> function draw1(id){ var canvas = document.getElementById(id); var context =canvas.getContext("2d"); context.fillRect(0,0,100,100); // 绘制一个矩形,默认颜色为黑色 context.strokeRect(120, 0, 100, 100); // 绘制描边矩形 }draw1('myCanvas');</script>
第三部分:线条
线条(路径)绘制步骤:
1)beginPath() 准备
2)moveTo() 绘制路径的原点坐标(x,y)
3) lineTo() 设置线条的终点坐标(x,y)
4) closePath() 完成路径的绘制
5)stroke() 绘制轮廓,显示路径
实例:
<script> function draw1(id){ var canvas = document.getElementById(id); var context =canvas.getContext("2d"); context.beginPath(); context.moveTo(40,40); context.lineTo(140,40); context.closePath(); context.stroke(); }draw1('myCanvas');</script> 
第四部分:圆形
canvas 通过绘制圆弧并将其首尾相连,达到绘制圆形的目的。
创建圆弧的方法:context.arc(x, y, radius, starAngle,endAngle, anticlockwise)
对应参数:
1)圆弧原点的(x,y)坐标值,也就是例子中的圆心
2)圆弧半径
3)开始角度
4)结束角度
5)布尔值(顺时针false,逆时针true)
注意: canvas中的圆是以弧度而不是角度为单位的。
360度(一个完整的圆)是2π(PI的2倍)弧度
实例:
<script type="text/javascript"> function draw1(id){ var canvas = document.getElementById(id); var context =canvas.getContext("2d"); context.beginPath(); context.arc(230,90,50,0,Math.PI*2,false); // 绘制圆形 context.closePath(); context.fill(); // 填充路径 }draw1('myCanvas');</script>
第五部分:样式
1. fillStyle :给矩形填充颜色
2. strokeStyle:给描边和线条添加颜色
3. lineWidth:修改线宽(线宽默认为1),这个属性也会影响图形
通过设置2D渲染上下文的fillStyle属性,就能够修改形状和路径的填充颜色,如下,绘制一个红色的正方形
<script type="text/javascript"> function draw1(id){ var canvas = document.getElementById(id); var context =canvas.getContext("2d"); context.fillStyle = "red"; // 给图形填充红色 context.fillRect(0,0,50,50); // 一个红色的正方形 context.fillRect(70,70,80,80); // 又一个红色正方形 context.fillStyle = "blue"; // 给图形填充蓝色 context.fillRect(70,70,80,80); // 一个蓝色正方形 context.strokeStyle = "yellow"; // 给图形填充黄色描边 context.strokeRect(170,170,100,100); // 一个黄色描边的正方形 context.strokeStyle = "blue"; // 绘制蓝色线条 context.beginPath(); // 绘制线条开始 context.moveTo(290,290); context.lineTo(350,350); context.closePath(); context.stroke(); // 绘制线条结束 context.lineWidth = 5; // 加粗线条 context.strokeStyle = "blue"; // 绘制蓝色线条 context.beginPath(); context.moveTo(320,340); context.lineTo(370,390); context.closePath(); context.stroke(); // 加粗的线条绘制完成 context.strokeRect(380,380,50,50) // 受影响的图形,描边已加粗 }draw1('myCanvas');</script> 
第六部分:绘制文本
canvas绘制文本:
(1) canvas中的文本以图片形式绘制,不可用普通文字一样用鼠标指针选取
(2) 文字绘制后不可编辑,除非先擦除文字,重新绘制
注:通常是使用html来处理文本,使用canvas来处理像素和图形
1.绘制文本:fillText
参数:
准备绘制的文本,文本原点(左下角)的(x,y)坐标值
默认:10px sans-serif
2.修改文字属性:font
3.描边文本:strokeText
<script type="text/javascript"> function draw1(id){ var canvas = document.getElementById(id); var context =canvas.getContext("2d"); var text = "hello world!"; context.font="30px serif" // 把文本大小设置为30px context.fillText(text,40,40); // 绘制文本 context.strokeText(text,40,80); // 描边文笔塔你 }draw1('myCanvas');</script>
html 5 canvas画布整理的更多相关文章
- 用html5的canvas画布绘制贝塞尔曲线
查看效果:http://keleyi.com/keleyi/phtml/html5/7.htm 完整代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHT ...
- 【读书笔记《Android游戏编程之从零开始》】12.游戏开发基础(Canvas 画布)
1.Canvas 画布 画布类 Canvas 封装了图形和图片绘制等内容,此类常用的函数说明如下: drawColor(int color) 作用:绘制颜色覆盖画布,常用于刷屏 参数:颜色值,也可用十 ...
- 关于使用Css设置Canvas画布大小的问题
问题分析 我们在调整画布大小时,希望画布中的图形保持不变,只是改变画布本身的大小.但是如果使用Css设置画布大小,则会出现问题. 问题描述 如果使用Css设置Canvas画布的大小,则导致画布按比例缩 ...
- Particles.js基于Canvas画布创建粒子原子颗粒效果
文章目录 使用方法 自定义参数 相关链接 Particles.js是一款基于HTML5 Canvas画布的轻量级粒子动画插件,可以设置粒子的形状.旋转.分布.颜色等属性,还可以动态添加粒子,效果非常炫 ...
- 自学HTML5第四节(canvas画布详解)
canvas画布好像可是说是HTML5的精华了,一定要学好,嗯嗯,绚丽的东西就要从基础的开始.... 先看看啥玩意叫做canvas 什么是 Canvas? HTML5 的 canvas 元素使用 Ja ...
- “canvas画布仿window系统自带画图软件"项目的思考
"canvas画布仿window系统自带画图软件"项目的思考 首先贴上DEMO图,并没有美化效果.对UI有要求的,请自带补脑技术. 思考一 在做项目的过程中,我发现"工具 ...
- 更新——Canvas画布动画效果之实现倒计时
Hello,大家好! 小W复活啦!继续欢乐的给大家更博,输送新知识~~ 不开玩笑啦!秒进正题~~~ 上次更博,小W给大家介绍了Canvas画布的基础部分,以及实现了一个由7*10点阵图显示的倒计时的基 ...
- Canvas 画布组件(官网翻译)
Canvas画布 The Canvas is the area that all UI elements should be inside. The Canvas is a Game Object w ...
- CANVAS画布与SVG的区别
CANVAS是html5提供的新元素<canvas>,而svg存在的历史要比canvas久远,svg并不是html5专有的标签,最初svg是用xml技术(超文本扩展语言,可以自定义标签或属 ...
随机推荐
- Div 定时移动
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- MFC注册窗口类以及FindWindow按窗口类名查询
很多玩游戏的人都知道一般游戏客户端程序是不允许双开的,就是说在同一游戏在启动的时候,是无法打开多个窗口.很多其他软件如酷狗播放器等也是这样.如果把打开的窗口最小化,这时重新启动程序,最小化的窗口会被显 ...
- sqlserver Between And的问题
Id Name RegisterDate 1 澎澎 2007/1/5 00:00:00 2 丁丁 2007/1/6 04:37:00 3 亞亞 2007/1/7 00:00:00 数据库的数据如上.若 ...
- DBNEWNAME工具介绍
下面修改数据库的SID和db_name [root@oracle ~]# su - ora11g db11@oracle /home/ora11g$ db11@oracle /home/ora11g ...
- C#winForm调用WebService的远程接口
Web Service 的创建简单编码.发布和部署 上一篇详细概述了WebService的创建,编码,发布和部署,那么作为客户端的程序如何访问远程端的WebService 接下来看一下具体步骤: ...
- EF不能很好的支持DDD?估计是我们搞错了!
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:最近在ABP项目中尝试纯粹的DDD,然后遇到EF实现的Repository似乎不能很好 ...
- [算法总结]partition (quicksort)
private int partition(int[] nums, int lo, int hi) { if (lo >= hi) { return lo; } int i = lo; int ...
- [leetcode]题型整理之用bit统计个数
137. Single Number II Given an array of integers, every element appears three times except for one. ...
- RumTime实践之--UITableView和UICollectionView缺省页的实现
有关RunTime的知识点已经看过很久了,但是一直苦于在项目中没有好的机会进行实际运用,俗话说"光说不练假把式",正好最近在项目中碰到一个UITableView和UICollect ...
- D3中数据与DOM element绑定之data() enter() exit()浅析
几个非常有用的links: [1] three little circles. http://bost.ocks.org/mike/circles/ [2] How selection works. ...