[英]javascript - interactive clipping does not refresh screen
我需要有一個程序,該程序允許用戶用矩形裁剪圖像:
https://jsfiddle.net/w3qfLr10/58/
我希望當我單擊畫布上的其他位置時,該程序會將背景圖像剪切到該位置。 但是,從鏈接可以看到,每次單擊鼠標時,屏幕都不會刷新。 我希望背景在最新的鼠標位置處只能被一個矩形剪裁。 相反,似乎所有鼠標單擊都會剪切背景。 Thanks
這是我的代碼:
<html>
<head>
<style>
body {
margin: 0px;
padding: 0px;
}
</style>
</head>
<body>
<canvas id='myCanvas' width="480" height="320"> </canvas>
<script >
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
var imageObj = new Image();
var rectX = 75;
var rectY = 60;
function draw() {
context.clearRect(0,0, canvas.width, canvas.height);
context.beginPath();
context.rect(rectX, rectY, 250, 180);
context.clip();
context.drawImage(imageObj, 69, 50);
};
imageObj.onload = function() {
draw();
canvas.onmouseup = function(e) {
rectX = e.x;
rectY = e.y;
draw();
};
};
imageObj.src = 'http://www.html5canvastutorials.com/demos/assets/darth-vader.jpg';
</script>
</body>
</html>
我弄清楚出了什么問題。 為了使程序表現出預期的行為,我只需要在路徑之前添加context.save()並在繪圖之后添加context.restore()。 因此,新代碼如下所示:
....
context.clearRect(0,0, canvas.width, canvas.height);
context.save(); //new code
context.beginPath();
context.rect(rectX, rectY, 250, 180);
context.clip();
context.drawImage(imageObj, 69, 50);
context.restore();//new code
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.