当前位置: 移动技术网 > IT编程>网页制作>Html5 > HTML5 CANVAS制图 基础总结

HTML5 CANVAS制图 基础总结

2018年12月26日  | 移动技术网IT编程  | 我要评论
一、基本绘图

 

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

复制代码

  关于变换矩阵,有一篇很好的文章可以加深你的理解:https://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.

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网