Déplacement d’image dans la canvas avec la souris

J’ai cette canvas où j’utilise 2 images, l’une est l’image principale et la seconde est utilisée comme masque d’écrêtage.

Je dois pouvoir déplacer l’image principale et avoir le code déjà implémenté, mais lorsque nous cliquons sur l’image pour la faire glisser, l’image prend toujours la position initiale. souris, il y a une sorte de retard croissant. J’ai essayé de changer ça, mais je ne suis pas très doué en maths pour trouver la bonne formule.

C’est le code que j’utilise pour capturer la souris en mouvement:

$(window).mousemove(function(event) { if( isDragging == true ) { var cWidth = $("#stcanvas").width(); moveXAmount = (event.pageX / $(window).width())*cWidth; moveXAmount = moveXAmount - (cWidth/2); var cHeight = $("#stcanvas").height(); moveYAmount = (event.pageY / $(window).height())*cHeight; moveYAmount = moveYAmount - (cHeight/2); buildcanvas(); } }); 

Toute idée de comment cela peut-il être résolu?

Voici un violon: http://jsfiddle.net/rVx5G/10/

Il semble que vous deviez gérer le delta en mouvements de la souris au lieu de vous déplacer par rapport à la fenêtre. Voici un jsfiddle . Le changement est:

 var prevX = 0; var prevY = 0; $(window).mousemove(function(event) { if( isDragging == true ) { if( prevX>0 || prevY>0) { moveXAmount += event.pageX - prevX; moveYAmount += event.pageY - prevY; buildcanvas(); } prevX = event.pageX; prevY = event.pageY; } }); 

Est-ce que cela réalise ce que tu voulais?

Changez cette ligne comme ci-dessous pour la taille automatique

ctx.clearRect (0, 0, mask_image.width , mask_image.height );

 function make_pic(ctx) { // Mask for clipping mask_image = new Image(); mask_image.src = 'mask.png'; ctx.clearRect(0, 0, mask_image.width, mask_image.height); ctx.drawImage(mask_image, 0, 0); ctx.save(); ....