码迷,mamicode.com
首页 > 其他好文 > 详细

偏移:translate ,旋转:rotate,缩放 scale,不知道什么东东:lineCap 实例

时间:2016-05-11 11:04:07      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

<!DOCTYPE HTML> <head> <meta charset = "utf-8"> <title>canvas</title> <style type="text/css"> #canvas{border:1px solid #eee ; display:block; background-color: #B36666; margin: 20px auto; } </style></head><body><div><canvas id = "canvas" width = "1300px" height = "800px"></canvas></div> <script type = "text/javascript" >
window.onload=function(){
var context = document.getElementById(‘canvas‘).getContext(‘2d‘)
/* translate
translate 属性:context.translate(100,100);
参数1:绘制图时的x坐标的参考点,不再是0
参数2:绘制图时的y坐标的参考点,不再是0
注意:translate会叠加
解决方案:
context.save();
画图代码........
context.restore();
*/
//不使用translate,绘画初始坐标(10,20)
context.strokeRect(10,20,100,150);
//使用 translate ; 绘画初始坐标(50,50)
context.save();//解决叠加方案:
context.translate(50,50);
context.fillStyle=‘rgba(100,100,200,0.5)‘;
context.fillRect(0,0,100,150);
context.restore();//解决叠加方案:
/*
如果:使用translate,不添加save、restore方法
那么:translate会叠加会影响往后画的图形
如果:添加save、restore方法
那么:不会影响后面的图形
绘画初始坐标(100+10,100+20)
*/
context.save();//解决叠加方案:
context.translate(100,100);
context.fillStyle=‘yellow‘;
context.fillRect(10,20,100,150);
context.restore();//解决叠加方案:

/*
如果:上面例子不添加save、restore方法
那么:translate会叠加:绘画初始坐标(100+50+50,100+100+50)
如果:上面有save、restore方法
那么:绘画初始坐标(50+50,100+50)
*/
context.save();//解决叠加方案:
context.translate(50,100);
context.fillStyle=‘rgba(200,200,200,0.4)‘;
context.fillRect(50,50,100,150);
context.restore();//解决叠加方案:


/* lineCap
lineCap 属性:见效果,中间是正常的效果,默认值,只对头尾有效
默认值:context.lineCap=‘butt‘;
圆头 :context.lineCap=‘round‘;
方头 :context.lineCap=‘square‘;
*/
context.lineWidth = 20;
context.beginPath();
context.moveTo(240,20);
context.lineTo(240,400);
context.strokeStyle="red";
context.stroke();

context.beginPath();
context.lineTo(280,20);
context.lineTo(280,400);
context.lineCap=‘round‘;
context.strokeStyle="green";
context.stroke();

context.beginPath();
context.lineTo(320,20);
context.lineTo(320,400);
context.lineCap=‘square‘;
context.strokeStyle="blue";
context.stroke();


/* rotate、scale
rotate 属性:旋转,以弧度为单位
转180度 :Math.PI
90度 :Math.PI/2
45度 :Math.PI/4

scale 属性 放大倍数 context.scale(x,y)
参数x 代表在x轴上放大的倍数
参数y 代表在y轴上放大的倍数
scale除了放大目标的大小之外,还会放大目标元素的其他属性,
例如lineWidth属性,translate属性
*/
//解决叠加方案:
context.save();
//设置起点坐标(450,100)
context.translate(450,100);
//旋转:180/4 = 45度 ,以起点坐标(450,100)为旋转点
context.rotate(Math.PI/4);
//缩放:x缩放1.5倍,y1.3倍,缩放后的高宽(150,130)
context.scale(1.5,1.3);
context.fillStyle=‘rgba(200,200,200,0.4)‘;
context.fillRect(0,0,100,100);
context.restore();//解决叠加方案:
}
</script> </body> </html>

偏移:translate ,旋转:rotate,缩放 scale,不知道什么东东:lineCap 实例

标签:

原文地址:http://www.cnblogs.com/vs1435/p/5480917.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!