HTML5 CANVAS制图 基础总结

一、基本绘图

首先,定义2D渲染变量ct(这里用了Jquery库):

var ct = $(#canvasId).get(0).getContext('2d');

以下是绘制各种基本图形的方法:

//绘制矩形(填充/描框)
ct.fillRect(x,y,w,h)
ct.strokeRect(x,y,w,h)

//绘制路径--线条
ct.beginPath();
ct.moveTo(x0,y0);
ct.lineTo(x1,y1);
ct.closePath();
ct.stroke();

//绘制路径--圆弧
ct.beginPath();
ct.arc(x,y,r,start,end,true);
ct.closePath();
ct.fill();

//绘制文本
ct.font = "30px serif...";
ct.fillText(txt,x,y);
ct.strokeText(txt,x,y);

//设置样式
ct.fillStyle = "rgb(r,g,b)";
ct.strokeStyle = "rgb()";
ct.lineWidth = 5;

复制代码

还提供了一些灵活的方法:

//橡皮擦(擦除矩形范围)
ct.clearRect(x,y,w,h);

//重置样式
canvas.attr("width",w);

 

二、高级功能

以下是对画布的一些变换操作:

ct.save()/restore()  //保存/恢复
ct.translate(x,y)    //平移
ct.scale(a,b)        //放大、缩小
ct.rotate(Math.PI)   //绕(0,0)旋转

//变换矩阵
ct.transform(xScale,ySkew,xSkew,yScale,xTrans,yTrans)  
ct.setTransform(xScale,ySkew,xSkew,yScale,xTrans,yTrans) //重置

关于变换矩阵,有一篇很好的文章可以加深你的理解:http://shawphy.com/2011/01/transformation-matrix-in-front-end.html

这是些常用的操作:
复制代码

ct.globalAlpha = 0.5    //透明度

//阴影
ct.shadowBlur = 20;     //扩散
ct.shadowOffsetX = 10;
ct.shadowOffsetY = 10;
ct.shadowColor = rgba;

//渐变(线性/放射性)
ct.createLinearGradient(x,y,x1,y1)
ct.createRadialGradient(x,y,r,x1,y1,r1)
//设渐变的始终颜色
addColorStop(0,"rgb()")/(1,"rgb()");

贝塞尔曲线绘制:

//最后两个参数是终点的坐标点
ct.beginPath();
ct.moveTo(50,250);
ct.quadraticCurveTo(250,100,450,250)  //两次贝塞尔曲线
ct.bezierCurveTo(150,50,350,450,450,250) //三次贝塞尔曲线
ct.stroke();

画布导出为图像:

//生成图片的src地址
var imgURL = canvas.get(0).toDataURL();
//以下将画布替换为图片
var img = $("<img></img>");
img.attr("src",imgURL);
canvas.replaceWith(img);

 

三、图片处理

图片的引入和调整(图片的变换就是画布的变换,不再介绍):

//引入图片
var img = new Image();
img.src = ".jpg";
$(img).load(function(){
   ct.drawImage(参数);    
})

//图片调整
ct.drawImage(image,x,y,w,h)
//图片裁剪与调整,其中dx/dy/dw/dy为裁剪的参数
ct.drawImage(image,dx,dy,dw,dh,x,y,w,h)

复制代码

高级处理(关于图像像素的绘制和处理,仅供了解):
复制代码

//imgData对象
var imgData = ct.getImageData(x,y,w,h)  //获取
 
//imgData对象的属性
imgData.width/height    //宽高
imgData.data            //像素集合数组,表示rgba

//创建图像
var imgData = ct.createImageData(w,h)  
ct.putImageData(imgData,x,y)

 

以上都是比较基本的知识点总结,没写的太细,只求清晰易查及备忘,如果对哪个点不是很明白,完全可以复制关键字google。

至此,基础知识已经总结完了,不过以上仅仅是基本的静态画布制作而已,如果你懂得灵活应用javascript,结合canvas就可以制作出很漂亮的动画或游戏。这些应用已经很多了,感兴趣可以自行查找相关信息,不过首先你得学会js.

时间: 2024-10-30 11:55:53

HTML5 CANVAS制图 基础总结的相关文章

《HTML5 Canvas开发详解》——第1章 HTML5 Canvas简介1.1 基础的HTML页面

第1章 HTML5 Canvas简介 HTML5是新一代的HTML,即超文本标记语言.HTML从1993年第一次标准化后,便奠定了万维网的基础.HTML通过使用将标签用尖括号(< >)括起来的方式定义Web页面内容. HTML5 Canvas是屏幕上的一个由JavaScript控制的即时模式位图区域.即时模式是指在画布上呈现像素的方式,HTML Canvas通过JavaScript调用Canvas API,在每一帧完全重绘屏幕上的位图.作为一个程序员,所要做的就是在每一帧渲染之前设置屏幕显示,

《HTML5 canvas开发详解(第2版)》——1.2 基础的HTML5页面

1.2 基础的HTML5页面 在开始讲解Canvas前,需要谈论一下HTML5的相关标准--这里将使用HTML5来创建Web页面. HTML是用于在互联网上构建页面的标准语言.本书不会将很多时间花费在讲解HTML上,但HTML是< canvas >的基础,所以不能完全跳过它. 一个基本的HTML页面分成几个部分,通常有< head >和< body >,新的HTML5规范增加了一些新的部分,例如< nav >.< article >.< h

《HTML5 Canvas游戏开发实战》——导读

前言 为什么要写这本书 并非计算机专业的我,却最终走上了编程之路,并写了这样一本书,为什么呢?其实一切都是因为和游戏结了缘. 小时候我非常喜欢玩游戏,为了玩游戏和小伙伴们干过不少调皮捣蛋的事情.初中为了得到自己的第一台游戏机,和父亲打赌,破天荒拿了全班第一名.当然有了游戏机的相伴,从那以后就再也没有拿过第一名了.因为数学上较有优势,所以读大学时选择的是数学专业,没有选读计算机让后来做开发的我多少感到有些遗憾.和其他人一样,大学是真正改变我人生的时期,第一次有了电脑,第一次从室友嘴里得知QQ为何物

Foundation HTML5 Canvas中的2处错误

     最近公司项目需要使用HTML5 Canvas开发公司大厅展示系统,当然这个项目还在进行中,不过我在进行另外一个新项目,等项目结束时,我将分享项目代码.学习HTML5 canvas主要书籍是<Foundation HTML5 Canvas For Games and Entertainment>,已经有中文版,名叫<HTML5 Canvas基础教程>.英文说中的实例有2处错误.      第一处:Chapter4 Gradients小结中,实例代码: var gradien

《HTML5 canvas开发详解(第2版)》——第1章 HTML5 Canvas简介1.1 什么是HTML5

第1章 HTML5 Canvas简介 HTML5是新一代的HTML,即超文本标记语言.HTML从1993年第一次标准化后,便奠定了万维网的基础.HTML通过使用将标签用尖括号(< >)括起来的方式定义Web页面内容. HTML5 Canvas是屏幕上的一个由JavaScript控制的即时模式位图区域.即时模式是指在画布上呈现像素的方式,HTML Canvas通过JavaScript调用Canvas API,在每一帧中完全重绘屏幕上的位图.作为一名程序员,所要做的就是在每一帧渲染之前设置屏幕的显

使用CoffeeScript和HTML5 canvas元素创建小游戏

小游戏是学习新技术的一种有趣方式.本文将引导您使用 CoffeeScript 和http://www.aliyun.com/zixun/aggregation/79228.html"> HTML5 canvas元素亲自实现Conway 的 Game of Life .尽管Conway 的 Game of Life 可能算不上一个游戏,但它是一个非常容易管理的出色的小任务. 在技术方面,您将需要: 一个可处理 HTML5 canvas元素的最 新的 Web 浏览器. CoffeeScript

《HTML5+JavaScript动画基础》——第1章 动画的基本概念 1.1动画

第一部分 JavaScript动画基础 第1章 动画的基本概念 看看Web浏览器已经发展到何种程度!最初Web浏览器仅仅是一个用于在网络上访问文本文件的程序,很快它就彻底改变了我们沟通与分享信息的方式,现在它已经演变成一个完全图形化的交互式编程环境.HTML5作为网页标记语言的最新标准加入了大量原本只存在于本地应用中的图形功能.经过短暂的停滞,得益于HTML5和JavaScript技术引发的新一轮的竞争与创新,现在的Web浏览器发展迅速.新的canvas元素提供了一种创建标准化的游戏.应用与动画

《HTML5 canvas开发详解(第2版)》——导读

前言第2版介绍自从本书第1版发行之后,在过去的两年里,HTML5 Canvas的使用有了突飞猛进的增长.本书的第1版可以称得上是第一批介绍Canvas的专著之一.在我们为自己的快速而感到自豪同时也意味着我们曾经独自进行了大量的研究和探索.早在2011年,只有极少数HTML5 Canvas应用的例子和教程.但在2013年情形发生了改变.现在有许多关于HTML5 Canvas的资源可供选择,从框架到API,有许多网站和书籍进行专门的阐述.为了编写第2版,我们进行了大量艰辛的工作来检查在第1版中哪些部

《HTML5 Canvas开发详解》——第2章 在Canvas上绘图2.1 本章基本文件设置

第2章 在Canvas上绘图 HTML5 Canvas的使用是以强大的绘图.着色和基本二维形状变换为基础的,然而可供选择的内建形状相对有限,程序员可以通过一组称做路径的线段来绘制出想要的形状,"2.4使用路径创建线段"将涉及相关内容. 提示:可以采用在线形式很好地了解HTML5 Canvas API.WSC网站上有详尽且不断更新的参考,具体描述了Canvas 2D绘图API的功能. 然而,这个在线参考缺少使用API的具体例子.本书避免简单地介绍各个参数的使用,将花时间通过创建示例来解释