canvas实现遮罩效果

本文介绍了一种使用canvas绘制两个三角形作为遮罩,实现将普通图片以平行四边形形式展现的技术。包括HTML结构、canvas画图方法及CSS定位,以及效果优化建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    今天做的一个网页要实现图片以平行四边形的样子展现出来,但是切图的时候要切成普通的图片,想了很久,最后是通过canvas绘制两个三角形来完成遮罩的效果。

  • 最终效果图:

最终效果图

  • 提供的素材图片

素材图片


好了,那么开始实现这种效果了

1 . 将页面的结构写好,两个三角形的canvas画布和一张图片

<div class="m-img">
    <canvas id="m-triangle2" width="640px" height="100px">      </canvas>
    <img src="images/1.jpg" width="640px">
    <canvas id="m-triangle" width="640px" height="100px"></canvas>
</div>

2 . 通过canvas画一个正直角三角形和一个倒直角三角形

<script>
    //正直角三角形
    var canvas = document.getElementById("m-triangle");
    var ctx = canvas.getContext("2d");
    ctx.beginPath();
    ctx.moveTo(0, 0);
    ctx.lineTo(0, 100);
    ctx.lineTo(640, 100);
    ctx.closePath();
    ctx.fillStyle = '#fff';
    ctx.fill();


    //倒三角直角形
    var canvas2 = document.getElementById("m-triangle2");
    var ctx2 = canvas2.getContext("2d");
    ctx2.beginPath();
    ctx2.moveTo(0, 0);
    ctx2.lineTo(640, 100);
    ctx2.lineTo(640, 0);
    ctx2.closePath();
    ctx2.fillStyle = '#fff';
    ctx2.fill();
</script>

这里canvas的用法就不多介绍了,直接解释下直角三角形的画法。首先看正直角三角形, 通过ctx.moveTo(0, 0);确定原点位置,然后通过ctx.lineTo(0, 100);向y轴画100px的线,最后画(640,100)完成三角形的闭合。然后填充颜色就ok了。倒三角形的原理也是一样的。
正直角三角形

3 . 最后通过css将它们的位置确定一下

.m-img {
    width: 640px;
    margin: 40px auto;
    position: relative;
}

#m-triangle {
    position: absolute;
    bottom: 0;
    left: 0;
}

#m-triangle2 {
    position: absolute;
    top: 0;
    left: 0;
}

4 . 大功告成,华丽丽的效果就这样实现了。但是角的部分还是有点瑕疵,不知道怎么解决。这里附上Demo的下载地址:
http://download.csdn.net/detail/a46262563/8992299

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值