Canvas
复习:
获取绘图上下文
var gd = oC.getContext('2d');
设置起点
gd.moveTo()
设置终点
gd.lineTo()
描边
gd.stroke()
填充
gd.fill()
描边颜色
gd.strokeStyle
填充颜色
gd.fillStyle
重新开始路径
gd.beginPath()
清屏
gd.clearRect()
闭合路径
gd.closePath()
矩形
a).
gd.rect()
gd.stroke()/fill()
b).
gd.fillRect()/strokeRect()
弧形
gd.arc(cx,cy,r,s,e,b)
cx,cy 圆心位置
r 半径
s 开始弧度
e 结束弧度
b 是否逆时针
文字
gd.font = '字体大小 字体类型';
水平对齐方式
gd.textAlign center
基线对齐方式
gd.textBaseline middel
gd.fillText(str,x,y);
gd.strokeText(str,x,y);
线性渐变
var lg = gd.createLinearGradient(x1,y1,x2,y2);
lg.addColorStop(系数(0-1),color);
径向渐变
var rg = gd.createRadialGradient(cx1,cy1,r1,cx2,cy2,r2);
rg.addColorStop(系数(0-1),color);
获取canvas图片
oC.toDataURL(Mime-Type)
image/png 默认
image/jpeg
base64 文件流
直接可以放在src或者background里
Mime-Type
abc.html text/html
abc.jpg image/jpg
abc.png image/png
abc.avi video/avi
abc.mp3 audio/mp3
canvas添加事件
给canvas添加事件
判断范围
gd.isPointInPath(x,y);
jcanvas javascript canvas的库
http://jcscript.com/
变形
旋转
gd.rotate
(弧度);
平移
gd.translate(x,y);
缩放
gd.scale(x,y);
注意:
canvas的变形圆心永远都是画布的左上角
操作的并不是图形,而是画布
图形一旦画上去,就不变了
保存 gd.save();
变形操作
画图
还原 gd.restore();
引入图片背景
var cp = gd.createPattern(oImg,'平铺方式')
repeat
repeat-x
repeat-y
no-repeat
引入图片
gd.drawImage(
oImg,
dx,dy
);
gd.drawImage(
oImg,
dx,dy,dw,dh
);
gd.drawImage(
oImg,
sx,sy,sw,sh,
dx,dy,dw,dh
);
像素级操作
var result = gd.getImageData(x,y,w,h);
var d = result.data;
d所有像素点
四个为一组
r,g,b,a,r,g,b,a,r,g,b,a...
操作
gd.putImageData(result,0,0);
读取文件
ondrop = function(ev){
var oFile = ev.dataTransfer.files[0];
oFile.name; 名字
oFile.size; 大小
oFile.type; 类型
var reader = new FileReader();
进度
reader.onprogress = function(ev){
ev.loaded 已加载
ev.total 总数
var scale = ev.loaded/ev.total;
};
完成
reader.onload = function(ev){
ev.target.result 文件内容
相等
reader.result 文件内容
};
以文本形式读取
reader.readAsText(oFile);
以Base64形式读取
reader.readAsDataURL
};
sum(4)(5).sub(1) 最终返回结果8
function sum(a){
return function(b){
return {
sub:function(c){
return a+b-c;
}
};
};
}
function show(a,b){
arguments[0].push(5);
arguments[1] = 6;
alert(a.length,b); 4
}
var arr = [1,2,3,5];
var b = 3;
show(arr,b);
alert(arr); 1,2,3,5
alert(b); 3