前端填坑记

canvas学习笔记

2016-10-28  本文已影响451人  亲爱的孟良
lineWidth //设置线条宽度,默认为1.0
lineCap   //设置线条末端样式?什么鬼,其实就是线条的帽子,值有butt/round/square,默认值为butt
lineJoin  //设置线条与线条之间相交处的样式,值有round/bevel/miter,默认是miter
miterLimit//当lineJoin属性设置为miter的时候,该属性可用于控制两条相交线外侧交点与内侧交点的距离,必须是一个大于零的有限的数字,默认值为10.
getLineDash()//返回一个包含当前虚线样式,长度为非负偶数的数组
setLineDash()//设置当前虚线样式
lineDashOffset//设置虚线样式的起始偏移量

lineCap三个属性见下图


linecaplinecap

lineJoin三个属性见下图


lineJoinlineJoin
ctx.setLineDash([4,2])//接受一个数组作为参数,来指定线段与间隙的交替
ctx.lineDashOffset = 0//设置起始偏移量
createLinearGradient(x1,y1,x2,y2)//指定渐变的起点和终点
createRadialGradient(x1,y1,r1,x2,y2,r2)//确定两个圆
gradient.addColorStop(offset,color)//上色,offset取值范围是0-1,表示渐变中开始用于结束之间的位置,color就是在offset位置显示的颜色值
用法举例 
var lineargradient = ctx.createLinearGradient(0,0,150,150);
lineargradient.addColorStop(0,'black');//定义渐变的颜色
ctx.fillStyle = lineargadient;//把渐变颜色给fillstyle或者strokestyle都行
ctx.fillRect(0,0,200,200)//这样就创建出一个渐变的矩形
createPattern(image,type)//image可以是一个image对象的引用或者另外一个canvas对象,type必须是repeat/repeat-x/repeat-y/no-repeat之一
举例:
var img = new Image()//第一次见
img.src = 'someImage.png';
img.onloda = function(){
 var ptn = ctx.createPattern(img,'repeat');
 ctx.fillStyle = ptn;
 ctx.fillRect(0,0,150,150)
}
shadowOffsetX //设定阴影在x轴上延伸距离,默认为0
shadowBlur //设定阴影的模糊程度,默认为0
shadowColor //设定阴影的颜色,默认是全透明的黑色
fillText(text,x,y [,maxWidth])//在指定的位置填充指定文本,最大宽度可选
strokeText(text,x,y [,maxWidth])//在指定的位置绘制文本边框(也就是空心的文字啦),最大宽度可选
举例:
ctx.font = "48px serif";
ctx.fillText('Hello world',10,50)
font //设置字体大小和字体名称
textAlign //文本对齐选项,值start/end/left/right/center,默认start
textBaseline //基线对齐选项。值top/hanging/middle/alphabetic,ideographic,bottom,默认alphabetic
direction //文本方向,值ltr/rtl/inherit,默认inherit
var text = ctx.measureText('foo');
text.width;//就可以输出宽度了

变形操作都是在对一个图像设置好属性之后、绘制之前用的

translate(offsetx,offsety)//offsetx是左右偏移量,offsety是上下偏移量,变形前保存状态是个很好的习惯,translate移动的是canvas和他的原点到一个不同的位置(也就是将canvas的原点进行了偏移)
rotate(angle)//angle是以顺时针为方向、以弧度为单位的值
scale(x,y)//x,y是横轴和纵轴的缩放因子,必须为正值,比1小是缩小,比1大是放大,默认情况下,canvas 的 1 单位就是 1 个像素。举例说,如果我们设置缩放因子是 0.5,1 个单位就变成对应 0.5 个像素,这样绘制出来的形状就会是原先的一半。同理,设置为 2.0 时,1 个单位就对应变成了 2 像素,绘制的结果就是图形放大了 2 倍。
transform(m11,m12,m21,m22,dx,dy)//目前没懂

移动、旋转、缩放,是叠加的,比如之前已经translate(100,100),左右上下偏移一百,此时位置为a点,如果后面没有移回来,又用了translat(200,200),那么是在a的基础上继续偏移,所以这个时候restore 的作用就来了,恢复状态,恢复在save时候的状态

所谓动画,就是不停的重绘,达到一种动的视觉效果

上一篇 下一篇

猜你喜欢

热点阅读