【发布时间】:2013-11-30 10:56:07
【问题描述】:
JSFiddle
我有一个 JQuery 脚本,它允许我在 Canvas 中拖动图像。请参阅随附的 JSFiddle 参考。
我的问题是,假设我将图像拖到了左边,我可以得到图像的当前状态我们可以看到多少部分?这样下次我在 Canvas 中加载图像时,它应该首先显示上次可见的部分
var drag, canvas, ctx;
var posX = 0, posY = 0;
var lastX, lastY;
$(document).ready(function(){
canvas=document.getElementById("canvas");
ctx=canvas.getContext("2d");
var image=document.createElement("img");
image.onload=function(){
canvas.width = 600;
canvas.height = 200;
ctx.drawImage(image,posX,posY);
init();
}
image.src="http://peach.blender.org/wp-content/uploads/poster_rodents_big.jpg";
function init(){
canvas.addEventListener('mousedown', function(){
drag = true;
lastX=null;
lastY=null;
});
document.addEventListener('mouseup', function(){
drag = false;
});
document.addEventListener('mousemove', function(evt) {
if(drag){
var mousePos = getMousePos(canvas, evt);
var x = mousePos.x;
var y = mousePos.y;
ctx.clearRect(0,0,canvas.width,canvas.height);
if(lastX && lastY){
posX += x-lastX;
posY += y-lastY;
if(posX>0) posX=0;
if(posY>0) posY=0;
if(posX<-image.width+canvas.width) posX = -image.width+canvas.width;
if(posY<-image.height+canvas.height) posY = -image.height+canvas.height;
ctx.drawImage(image,posX,posY);
}
lastX=x;
lastY=y;
}
}, false);
}
function getMousePos(canvas, evt) {
var rect = canvas.getBoundingClientRect();
return {
x: evt.clientX - rect.left,
y: evt.clientY - rect.top
};
}
});
【问题讨论】:
标签: javascript jquery asp.net asp.net-mvc asp.net-mvc-3