canvas --画图、图片

画图:
< script >
var canvas = document. querySelector( "#canvas");
canvas. width = 600;
canvas. height = 600;
var pen = canvas. getContext( '2d');
// pen.strokeRect(10,10,200,50);
// //保存(这一次画布的信息)
// pen.save();
// //改变画布 旋转25° 旋转的是画布
// pen.rotate(25*Math.PI/180);
// //在新画布上作图
// pen.strokeRect(10,10,200,50);
pen. strokeRect( 200, 250, 200, 50);
//保存(这一次画布的信息)
pen. save();
//把画布移动到600,0的位置;
pen. translate( 600, 0);
//把画布旋转90°
pen. rotate( 90* Math. PI/ 180);
/ /在新画布上作画
pen. strokeRect( 175, 275, 200, 50);
//还原以前保存的画布
pen. restore();
</ script >

保存canvas画的图
把canvas画的图片保存为base64编码的内容
toDataURL(‘image/png,1)
参数:1.保存的图片类型 2.保存的图片质量(0-1)
//保存canvas画的图
var canvasImg = canvas. toDataURL( "image/png", 1);
//使用
document. querySelector( "#img"). src = canvasImg;

画布渲染画布:
canvas2.drawImage(canvas1,0,0)
一个用户看不见的画布画图,画好了以后把这个看不见的画布画到另外一个用户看得见的画布上(提升用户体验)

(function(){
//创建一个用户看不见的画布
var canvasHide=document.createElement('canvas')
canvasHide.width=600;
canvasHide.height=600;
var penHide=canvasHide.getContext('2d')

//画图
penHide.fillRect(40,40,100,200)

//获取并设置用户看得见的画布
var canvas=document.getElementById('canvas')
var pen=canvas.getContext('2d')
canvas.width=600
canvas.height=600
canvas.style.border='1px solid blue'

//把看不见的画完画的画布画到看得见得画布上
pen.drawImage(canvasHide,0,0)
})()


//绘制一个重叠样子的图片
for(var i=0;i<10;i++){pen.drawImage(img,100+20*i,100+20*i)}
TIPs:
canvas重叠的部分不会乘以2 盒子重叠的部分要乘以2





图片:
pen.drawImage(img,x,y);//先学这个,img是图片对象
pen.drawImage(img,sx,sy,sw,sh,x,y,w,h);
参数:除红色参数外都是可选参数

img 图片对象//可以是标签对象,可以自己创建:var img=new Image();img.src=’xxx’
sx,sy 可选,剪切相对于(原始图片左上角开始)原始图片x,y 坐标
sw,sh可选,剪切原始图片的宽高
x,y 绘制图片的x,y坐标
w,h 可选,绘制图片的宽高

border-image :url(imgsrc) 100/50px round;
案例--制作动画:
< script >
var canvas = document. querySelector( "#canvas1");
canvas. width = 600;
canvas. height = 600;
var pen = canvas. getContext( '2d');
var img1= document. querySelector( "#img1");
//。。。下面这个两行代码可以不要上面这一行代码
var img2 = new Image();
img2. src= 'boy.png';
//window onload 和 图片onload是两回事

var i = 0;
var index2 = 500;
var btn = document. querySelector( "#btn");
var timer= null;
// function change () {
// var index1 = 306/4;
// //图片 切割开始位置:0,0 切割后在canvas中的位置:100,100 设置切割后图片的宽高:360/2 ,130;
// pen.drawImage(img2,index1*i,3,306/4,130,index2,100,306/4,130);
// i++;
// index2--;
// i%=4;
// }
img2. onload = function () {
btn. onclick = function () {
setInterval( change, 200)
};
function change () {
var index1 = 306/ 4;
//图片 切割开始位置:0,0 切割的宽高 切割后在canvas中的位置:100,100 设置切割后图片的宽高:360/2 ,130;
pen. drawImage( img2, index1* i, 3, 306/ 4, 130, index2, 100, 306/ 4, 130);
i++;
index2--;
i%= 4;
}
};
// btn.onclick = function () {
// setInterval(change,200)
// }
</ script >
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值