AmazingCounters.com

[canvas入坑1]canvas 画布拖拽效果

查看效果请到 http://philippica.github.io/  点击drag

和上一篇画图很像,所以有些部分做了省略

 

当鼠标按下时保存当前画布上的内容到ppImgData中,并且记录下初始点的位置,当鼠标移动时调用ppDrag函数

 1     $('#myCanvas').unbind();
 2     $('#myCanvas').mousemove(function(e)
 3     {
 4         if(ppMousePressed)
 5         {
 6             var mouseX = e.pageX - this.offsetLeft;
 7             var mouseY = e.pageY - this.offsetTop;
 8             context.clearRect(0, 0, ppCanvasWidth, ppCanvasHeight);//清屏
 9             ppDrag(mouseX, mouseY);
10         }
11     });
12     $('#myCanvas').mousedown(function(e)
13     {
14         if(e.which == 1)//茹果是左键
15         {
16             ppMousePressed = true;
17             ppImgData = context.getImageData(0, 0, ppCanvasWidth, ppCanvasHeight);//保存当前画布
18             var mouseX = e.pageX - this.offsetLeft;
19             var mouseY = e.pageY - this.offsetTop;
20             ppInitialPoint = new ppPoint(mouseX, mouseY);//记录鼠标初始位置
21         }
22     });
23     $(window).mouseup(function(e){
24         ppMousePressed = false;
25     });

 

所以关键就是ppDrag怎么写

 

然后也挺简单的,putImageData函数的后两个参数是画出图像的左上角坐标,然后就可以根据鼠标的初始位置、鼠标当前位置计算(其实就是做个差)出当前应该画的位置了

 

1 function ppDrag(curX, curY)
2 {
3     var dX = curX - ppInitialPoint.x;
4     var dY = curY - ppInitialPoint.y;
5     console.info(dX+" "+dY);
6     context.putImageData(ppImgData, dX, dY);
7 }

 

posted @ 2015-10-31 10:31  philippica  阅读(2215)  评论(0编辑  收藏  举报