gpt4 book ai didi

javascript - Canvas :在绘制的图像和剪辑之间插入渐变矩形

转载 作者:行者123 更新时间:2023-11-28 08:32:37 24 4
gpt4 key购买 nike

我正在尝试创建一个矩形,它将在动态剪切的图像顶部淡出。

但是,创建矩形的任何实例都位于绘制的图像后面,我似乎无法弄清楚如何将其放置在顶部,以便形状和图像都被剪切。

这是我目前所在位置的 fiddle :JSFiddle

这是我的 html:

 <div id='demo'>
<canvas id="canvas" width="200px" height="200px"></canvas>
<img id="img" src="http://www.filterforge.com/more/help/images/size200.jpg" />
</div>

这是我的 JavaScript:

function init(){
var canvas = document.getElementById('canvas');
var c = canvas.getContext('2d');

var r = 1;

function draw(){
c.beginPath();
c.arc(100,100,r,0,2*Math.PI,false);
r = r + 1;

// Start Image
c.save();
c.clip();
var img = document.getElementById('img');
c.drawImage(img,0,0);
c.restore();

// The Rectangle I am also trying to mask
c.fillStyle = "rgba(0,0,0,0.025)"
c.fillRect(0, 0, 200, 200);
c.save();
c.clip();
c.restore();

if(r < 100){

requestAnimationFrame(draw);

}
r++;
}

requestAnimationFrame(draw);

}
init();

如果你们能提供任何帮助,我将不胜感激。

谢谢

最佳答案

这是您想要的剪辑顺序:

  • 上下文.保存
  • 定义剪切区域(例如弧线)
  • 绘制图像
  • 上下文.恢复

演示:http://jsfiddle.net/m1erickson/YS45U/

代码:

<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" media="all" href="css/reset.css" /> <!-- reset css -->
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>

<style>
body{ background-color: ivory; }
#canvas{border:1px solid red;}
</style>

<script>
$(function(){

var canvas = document.getElementById('canvas');
var c = canvas.getContext('2d');
var r = 0;

var img=new Image();
img.onload=function(){
draw();
};
img.src="http://www.filterforge.com/more/help/images/size200.jpg";

function draw(){

// request another animation if not 100%
if(++r<100){
requestAnimationFrame(draw);
}

// save the unclipped context
c.save();

// set the clipping region
c.beginPath();
c.arc(100,100,r,0,2*Math.PI,false);
c.closePath();
c.clip();

// draw the image into the clipped region
c.drawImage(img,0,0);

// restore the canvas context
c.restore();

}

$("#stop").click(function(){});

}); // end $(function(){});
</script>

</head>

<body>
<button id="stop">Stop</button><br>
<canvas id="canvas" width=300 height=300></canvas>
</body>
</html>

关于javascript - Canvas :在绘制的图像和剪辑之间插入渐变矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21658394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com