【发布时间】:2014-11-26 04:55:33
【问题描述】:
我想在画布上绘制一张照片并允许用户在其上拖动一个圆圈。我能够做到。问题是当我清除上下文时,我绘制的图像消失了(参见此处:http://jsfiddle.net/wL0ossth/),如果不清除上下文,则整个图像都被彩色圆圈填充(参见此处:http://jsfiddle.net/wL0ossth/1/)。一些代码:
<canvas id="canvas" width=300 height=300></canvas>
<img id="scream" src="http://i10.dainikbhaskar.com/thumbnail/655x588/web2images/www.bhaskar.com/2014/11/25/2324_bus.jpg" alt="The Scream" width="220" height="277">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
JavaScript:'http://jsfiddle.net/wL0ossth/1/
var c=document.getElementById("canvas");
var img=document.getElementById("scream");
var ctx=c.getContext("2d");
ctx.drawImage(img,10,10);
canvas.addEventListener('mousemove', followMouse, false);
function findOffset(obj) {
var curX = curY = 0;
if (obj.offsetParent) {
do {
curX += obj.offsetLeft;
curY += obj.offsetTop;
} while (obj = obj.offsetParent);
return {x:curX,y:curY};
}
}
function followMouse(e){
ctx.beginPath();
var offset = findOffset(canvas); //get the offset of the canvas relative to the page
var posX = e.pageX - offset.x; //find the x position of the mouse
var posY = e.pageY - offset.y; //find the y position of the mouse
ctx.arc(posX,posY,50,0,Math.PI*2,false); //draw a circle
ctx.fill();
}
已编辑:我想让圆圈与我绘制的图像一起在清晰的上下文中移动。简而言之,就像http://jsfiddle.net/wL0ossth/1/中绘制的那样,在路径中没有留下黑色痕迹的圆圈
【问题讨论】:
-
请澄清:当用户用鼠标移动圆圈时,您希望发生什么?
-
实际上,只需在上下文清晰的情况下拖动圆圈,这样一旦绘制就不会显示为jsfiddle.net/wL0ossth/1中显示的图像以及作为背景绘制的img。
-
@soktinpk 有你的解决方法!祝你的项目好运。
标签: javascript jquery html canvas