一、基本绘图

首先,定义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)

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

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

  1. HTML5 Canvas(基础知识)

    最近笔者在学习HTML5的新元素<canvas>,会分享一些基础知识以及小例子,最终使用<canvas>实现一个绘制简单图表(条形图.线图或者饼图)的js库,会更新一到两篇文章 ...

  2. [HTML5 Canvas学习] 基础知识

    HTML5 canvas元素通过脚本语言(通常是Javascript) 绘制图形, 它仅仅是一个绘图环境,需要通过getContext('2d')方法获得绘图环境对象,使用绘图环境对象在canvas元 ...

  3. HTML5 canvas之基础篇(一)

    一.检测浏览器是否支持canvas if( !canvas || !canvas.getContext){ return; } 也可以使用modernizr.js库,Modernizr是一个易用的轻量 ...

  4. HTML5 canvas绘图基础(电子名片生成器源码)

    创建canvas <canvas id="myCanvas" class="canvas"> 您的浏览器不支持canvas </canvas& ...

  5. html5 canvas结构基础

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. Html5 Canvas动画基础碰撞检测的实现

    在Canvas中进行碰撞检测,大家往往直接采用游戏引擎(Cocos2d-JS.Egret)或物理引擎(Box2D)内置的碰撞检测功能,好奇的你有思考过它们的内部运行机制吗?下面将针对基本的碰撞检测技术 ...

  7. HTML5 Canvas绘图基础

  8. HTML5 Canvas游戏开发实战 PDF扫描版

    HTML5 Canvas游戏开发实战主要讲解使用HTML5 Canvas来开发和设计各类常见游戏的思路和技巧,在介绍HTML5 Canvas相关特性的同时,还通过游戏开发实例深入剖析了其内在原理,让读 ...

  9. HTML5 Canvas(画布)实战编程初级篇:基本介绍和基础画布元素

    欢迎大家阅读HTML5 Canvas(画布)实战编程初级篇系列,在这个系列中,我们将介绍最简单的HTML5画布编程.包括: 画布元素 绘制直线 绘制曲线 绘制路径 绘制图形 绘制颜色,渐变和图案 绘制 ...

随机推荐

  1. Serverlet具体解释

    Serverlet简单介绍: Servlet(Server Applet),全称Java Servlet,未有中文译文.是用Java编写的server端程序.其主要功能在于交互式地浏览和改动数据,生成 ...

  2. acd - 1216 - Beautiful People(DLIS)

    意甲冠军:一个人有两个属性S, B(1 ≤ Si, Bi ≤ 10^9),当两个人满足这两个属性 S1 < S2 && B1 < B2 要么 S1 > S2 & ...

  3. 关于system()的一些用法

    C语库函数 函数名: system  功  能: 发出一个DOS命令  用  法: int system(char *command);  它包含头文件<stdlib.h>  system ...

  4. Android Permission denied 错误 ( 附Android权限大全 )

    Android Permission denied 错误(附Android权限大全) java.net.SocketException: Permission denied (maybe missin ...

  5. JDBC加载过程

    jdbc载入的过程如图所看到的. 桥接模式请參照:设计模式:桥接模式 blog目的:与图说话 版权声明:本文博客原创文章,博客,未经同意,不得转载.

  6. mysql 数据库插入语句之insert into,replace into ,insert ignore

    近期才发现mysql的插入语句竟然有如此多的使用方法,这里拿来分享一下. ①关于insert into : insert into table_name values(); insert into t ...

  7. Asp.net MVC + EF + Spring.Net 项目实践(一)

    准备用几篇文章来做一个MVC的例子,为了给新同事做参考,也为自己做个知识储备. 首先,用VS2013创建一个空白解决方案StudentManageSystem,然后添加一个MVC应用程序(可参考ASP ...

  8. MVC4 学习笔记01

    1 . ASP.NET MVC 中 ActionResult 和 ViewResult 在使用上的区别是什么?要注意什么吗? ActionResult 是一个抽象(abstract)类,ViewRes ...

  9. Android学习之 WebView使用小结

    这段时间基于项目须要 在开发中与WebView的接触比較多,前段时间关于HTML5规范尘埃落定的消息出如今各大IT社区头版上,更有人说:HTML5将颠覆原生App开发 尽管我不太认同这一点 可是关于H ...

  10. JUnit介绍

    8.1.1  JUnit简介 JUnit主要用来帮助开发人员进行Java的单元测试,其设计非常小巧,但功能却非常强 大. 下面是JUnit一些特性的总结: — 提供的API可以让开发人员写出测试结果明 ...