드래그 가능한 이미지가있는 html 페이지에서는 마우스 포인터를 사용하여 도형이나 선을 그려야하고, 드래그 가능한 이미지에서는 그리기 이미지와 도형이 완료되지 않습니다. 또한 사용자가 이미지를 이동하면 이전에 그린 도형이 그대로 유지
됩니다. 한편, 모양을 만들고 선을 그릴 수 있었지만
이미지 위에 선을 그리려고 하면 배경으로 돌아갑니다. 누군가가
캔버스와 html5를 사용하여 동일한 결과를 얻을 수있는 방법을 제안 할 수 있습니까 ?
한 가지 방법은 이미지와 해당 이미지와 관련된 모양을 모두 그리는 함수를 만드는 것입니다.
이미지 오프셋과 동일한 오프셋으로 도형을 그려 이미지와 이미지의 도형을 조정 된 상태로 유지할 수 있습니다. 따라서 [x, y]에 이미지를 그리면 모양의 각 점에 x와 y를 추가합니다.
// points[] is an array of points that defines the shape you
// want drawn on your image
function drawImageWithShapes(img,points,x,y){
ctx.drawImage(img,x,y);
ctx.beginPath();
ctx.moveTo(points[0].x+x,points[0].y+y);
for(var i=1; i<points.length;i++){
ctx.lineTo(points[i].x+x,points[i].y+y);
}
ctx.stroke();
}
var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");
var cw=canvas.width;
var ch=canvas.height;
ctx.lineWidth=4;
ctx.strokeStyle='red';
var x=50;
var y=50;
var points=[];
points.push({x:37,y:0});
points.push({x:75,y:75});
points.push({x:0,y:75});
points.push({x:37,y:0});
var img=new Image();
img.onload=start;
img.src="https://dl.dropboxusercontent.com/u/139992952/multple/sun.png";
function start(){
drawImageWithShapes(img,points,x,y);
}
function drawImageWithShapes(img,points,x,y){
ctx.drawImage(img,x,y);
ctx.beginPath();
ctx.moveTo(points[0].x+x,points[0].y+y);
for(var i=1; i<points.length;i++){
ctx.lineTo(points[i].x+x,points[i].y+y);
}
ctx.stroke();
}
$('#test').click(function(){
x+=10;
y+=10;
ctx.clearRect(0,0,cw,ch);
drawImageWithShapes(img,points,x,y);
});
body{ background-color: ivory; padding:10px; }
#canvas{border:1px solid red;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<button id=test>Move and Redraw</button><br><br>
<canvas id="canvas" width=300 height=300></canvas>
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다