canvas 学习记录

什么是canvas
html5canvas元素使用javascript在网页上绘制图像
画布是一个矩形区域,可以控制其每一像素,canvas拥有多种绘制路径,矩形,圆形,字符以及添加图像的方法

创建canvas
html5页面添加canvas元素,规定元素的宽高及 id
<canvas id="myCanvas" width="200" height="100"></canvas>

使用canvas绘制线条
第一步:获取元素
 var myCanvas = document.querySelector('canvas');
第二步:获取绘图工具
var ctx = myCanvas.getContext('2d');
第三步:设置绘图的起始位置
ctx.moveTo(100,100);
第四步:绘制路径
ctx.lineTo(300,100);
第五步:描边
ctx.stroke();

canvas的基本使用
1.路径的绘制    stroke() 描边     fill()  填充
2.开启和关闭路径  beginPath()      closePath()
3.填充规则   非零环绕

设置样式:
1.画笔的状态
 lineWidth   线宽   默认1px    但是在图中因为是中心点绘制,会分成两个0.5px,在不饱和的情况下,自动填充,所以会呈现为2px
 lineCap  线末端的状态    round   square
 lineJoin  相交线的拐点   round   bevel
 strokeStyle  线的颜色
 fillStyle   填充颜色
 setLineDash[10,15])    设置虚线(数组是虚线的排列方式)
 getLineDash()    获取虚线的宽度集合
 lineDashOffset  设置虚线的偏移量(负值向右偏移,正值向左偏移)

例子:绘制一条虚线
ctx.moveTo(100,100.5);
ctx.lineT0(300,100.5);
ctx.setLineDash([10,20]);
console.log(ctx.getLineDash());
ctx.lineDashOffset = 120;
ctx.stroke();

canvas绘制矩形
rectxywh)  没有独立路径(需要手动绘制路径)
strokeRectx,y,w,h)  有独立的路径,不影响别的绘制
fillRectx,y,w,h)   有独立的路径,不影响别的绘制
clearRectx,y,w,h)    擦除矩形的区域

圆弧绘制
什么是弧度:长度的描述单位,一个园有2PI个弧度,一个角度PI/180的弧度
arcxyrstartAngleendAngletrue/false);
参数: x:圆心的横坐标      y:圆心的纵坐标      r:园的半径
startAngle:开始的角度           endAngle:结束的角度       true/false:绘制的方式  true(逆时针)  false(默认,顺时针)

绘制文本
ctx.font = 'MicrosoftYaHei';   设置字体
strokeText()    绘制字体的路径
fillTexttextxymaxWidth);     text:要绘制的文本   xy文本绘制的坐标(左下角)   maxWidth:文本的最大宽度
ctx.textAlign  文本水平对齐方式,相对绘制的坐标来看    left/center/right
ctx.textBaseline  设置基线   (垂直对齐方式)  top/middle/bottom
measureText()  获取文本宽度

绘制图片
drawImageimgxy)   图片对象(img/canvas/video)  图片绘制的坐标xy
drawImageimgxywh)  图片对象(img/canvas/video) 图片绘制的坐标xy  图片的尺寸wh  (图片是缩放,不是截取)
drawImage(img ,x,y,w,h,x1,y1,w1,h1)
图片对象(img/canvas/video x,y,w,h 是相对于图片的,从xy开始截取,截取wh高的矩形   x1,y1,w1,h1相对画布而言,图中绘制的点xy,和绘制的大小w1h1


坐标变换
平移: 移动画布的原点
translatexy)   移动目标点的坐标
缩放
scalexy)  宽高的缩放比例
旋转
rotateangle)  旋转的角度(默认原点是画布的左上角,可以通过平移来改变坐标原点)

转载于:https://my.oschina.net/u/4157959/blog/3073079

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值