图像裁剪示例

概念:

 

我们在使用Canvas绘制图像时,我们经常会想要只保留图像的一部分,这时我们可以使用Canvas API自带的图像裁剪功能来实现这一想法。此功能是指,在画布内使用路径,只绘制该路径所包括区域内的图像,不绘制路径外的图像。

使用图像上下文对象的不带参数的clip方法来实现Canvas元素的图像裁剪功能。

下面,我们来应用一番,在应用中,把画布背景绘制完成后,调用creat5StartClip函数,在函数中,创建一个五角星的路径,然后使用clip方法设置裁剪区域。具体的执行流程为先装载图像,然后调用drawImg函数,在该函数中调用creat5StarClip创建路径,设置裁剪区域,然后绘制经过裁剪后的图像

——最终可以绘制出一个五角星范围内的图像!

 

应用:

核心代码

function draw(id){
var canvas=document.getElementById("id");
if(canvas==null)
return false;
var context=canvas.getContext("2d");
var gr = context.createLinearGradient(0,400,300,0);
gr.addColorStop(0,'rgb(255,255,0)');
gr.addColorStop(1,'rgb(0,255,255)');
contxt.fillStyle = gr;
contxt.fillRect(0,0,400,300);
image=new Image();
image.onload = function(){
drawImg(context,img);
};
image.src = "image/Tulips.jpg";

}
function drawImg(context,image){
creat5StarClip(context);
context.drawImage(image,-50,-150,300,300);
}
function creat5StarClip(context){
var n = 0;
var dx = 100;
var dy = 0;
var s = 150;
context.beginPath();
context.translate(100,150);
var x = Math.sin(0);
var x = Math.cos(0);
var dig = Math.Pi/5*4;
for(var i = 0;i<5;i++)
{
var x = Math.sin(i*dig);
var x = Math.cos(i*dig);
comtext.lineTo(dx+x*s,dy+y*s);
}
context.clip();
}

posted on 2019-08-13 22:06  死磕&到底  阅读(194)  评论(0编辑  收藏  举报

导航