canvas整体放大_HTML5 Canvas图像放大、移动实例1

这篇博客详细介绍了如何使用HTML5 Canvas进行图像的缩放和平移操作。通过设置缩放比例并结合drawImage方法,实现图片的动态调整大小。同时,利用鼠标滚轮事件监听缩放,鼠标移动事件处理平移,实现交互式的图像查看功能。
摘要由CSDN通过智能技术生成

/***************绘制图像,放大缩小实例******************/

varcanvas=document.getElementById('canvasOne');varctx=canvas.getContext('2d');//加载图片

varscale= 0.1;//缩放比例

varimg= newImage();

img.οnlοad= function() {

reShow();

}

img.src= '../images/1.jpg';//根据缩放比例,显示图片

functionreShow() {varcWidth=canvas.width;varcHeight=canvas.height;variWidth=img.width;variHeight=img.height;varwidth=iWidth*scale;varheight=iHeight*scale;//居中显示

varleft=(cWidth-width)/ 2;vartop=(cHeight-height)/ 2;//清空画布极限值 --失败

//var maxWidth = iWidth > width ? iWidth : width;

//var maxHeight = iHeight > height ? iHeight : height;

//var minLeft = left < 0 ? left : 0;

//var minTop = top < 0 ? top : 0;

//ctx.clearRect(0,0,cWidth,cHeight);

//清除画布方式2 --失败

//var number = 1 / scale;

//var cWidth = canvas.width * number;

//var cHeight = canvas.height * number;

//ctx.clearRect(-cWidth, -cHeight, cWidth * 2, cHeight * 2);

//清除画布3

ctx.clearRect(-spanLeft,-spanTop, canvas.width, canvas.height);

ctx.drawImage(img, left, top, width, height);

}//滚轮时间

addMouseWheel(canvas,function(e) {vartemp=e.delta> 0 ? 0.1:-0.1;

scale+=temp;//缩放极限判断

scale=scale< 0.1 ? 0.1: scale;

scale=scale> 1 ? 1: scale;

reShow();

});//鼠标移动事件

//1.有一个鼠标移动,重绘图片的bug

varoldX=oldY= 0;varisMove= false;varspanLeft=spanTop= 0;

canvas.οnmοusedοwn= function(e) {

oldX=e.clientX;

oldY=e.clientY;

isMove= true;

}

canvas.οnmοusemοve= function(e) {if(isMove) {varcurrentX=e.clientX;varcurrentY=e.clientY;//计算移动的距离

varspanX=currentX-oldX;varspanY=currentY-oldY;

spanLeft+=spanX;

spanTop+=spanY;

ctx.translate(spanX, spanY);

reShow();//记录当前结果

oldX=currentX;

oldY=currentY;

}

}

canvas.οnmοuseup= function(e) {

oldX=oldY= 0;

isMove= false;

}

canvas.οnmοuseleave= function(e) {

oldX=oldY= 0;

isMove= false;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值