canvas裁剪clip()函数的具体使用


Posted in HTML / CSS onMarch 01, 2018

在canvas中,可以使用clip()函数裁剪区域,设定裁剪区域后,只有在区域内的图像才能显示,其余部分会被屏蔽掉

未使用裁剪绘制一个圆

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <title></title>  
    <style>  
        *{margin:0; padding:0;}  
        html, body{width:100%; height:100%; overflow:hidden; background-color:#AFAFAF;}  
    </style>  
</head>  
<body>  
    <canvas id="canvas"></canvas>  
    <script>  
        var canvas = document.getElementById('canvas'),  
            context = canvas.getContext('2d');  
        canvas.width = document.body.clientWidth;  
        canvas.height = document.body.clientHeight;  
        context.lineWidth = 3;  
        context.strokeStyle = 'red';  
        context.beginPath();  
        context.arc(200, 200, 100, (Math.PI / 180) * 0, (Math.PI / 180) * 360, false);  
        context.stroke();  
        context.closePath();  
    </script>  
</body>  
</html>

效果

canvas裁剪clip()函数的具体使用

使用clip()裁剪区域

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <title></title>  
    <style>  
        *{margin:0; padding:0;}  
        html, body{width:100%; height:100%; overflow:hidden; background-color:#AFAFAF;}  
    </style>  
</head>  
<body>  
    <canvas id="canvas"></canvas>  
    <script>  
        var canvas = document.getElementById('canvas'),  
            context = canvas.getContext('2d');  
        canvas.width = document.body.clientWidth;  
        canvas.height = document.body.clientHeight;  
        context.lineWidth = 3;  
        context.strokeStyle = 'red';  
        context.rect(0, 0, 200, 200);  
        context.clip();  
        context.beginPath();  
        context.arc(200, 200, 100, (Math.PI / 180) * 0, (Math.PI / 180) * 360, false);  
        context.stroke();  
        context.closePath();  
    </script>  
</body>  
</html>

效果

canvas裁剪clip()函数的具体使用

也可以使用arc绘制圆形的剪裁区域

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <title></title>  
    <style>  
        *{margin:0; padding:0;}  
        html, body{width:100%; height:100%; overflow:hidden; background-color:#AFAFAF;}  
    </style>  
</head>  
<body>  
    <canvas id="canvas"></canvas>  
    <script>  
        var canvas = document.getElementById('canvas'),  
            context = canvas.getContext('2d');  
        canvas.width = document.body.clientWidth;  
        canvas.height = document.body.clientHeight;  
        context.lineWidth = 3;  
        context.strokeStyle = 'red';  
        context.arc(100, 100, 150, (Math.PI / 180) * 0, (Math.PI / 180) * 360, false);  
        context.clip();  
        context.beginPath();  
        context.arc(200, 200, 100, (Math.PI / 180) * 0, (Math.PI / 180) * 360, false);  
        context.stroke();  
        context.closePath();  
    </script>  
</body>  
</html>

效果

canvas裁剪clip()函数的具体使用

使用save和restore实现只裁剪单个路径

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <title></title>  
    <style>  
        *{margin:0; padding:0;}  
        html, body{width:100%; height:100%; overflow:hidden; background-color:#AFAFAF;}  
    </style>  
</head>  
<body>  
    <canvas id="canvas"></canvas>  
    <script>  
        var canvas = document.getElementById('canvas'),  
            context = canvas.getContext('2d');  
        canvas.width = document.body.clientWidth;  
        canvas.height = document.body.clientHeight;  
        context.lineWidth = 3;  
        context.strokeStyle = 'red';  
        context.save();  
        context.rect(0, 0, 200, 200);  
        context.clip();  
        context.beginPath();  
        context.arc(200, 200, 100, (Math.PI / 180) * 0, (Math.PI / 180) * 360, false);  
        context.stroke();  
        context.closePath();  
        context.restore();  
        context.beginPath();  
        context.arc(250, 250, 100, (Math.PI / 180) * 0, (Math.PI / 180) * 360, false);  
        context.stroke();  
        context.closePath();  
    </script>  
</body>  
</html>

效果

canvas裁剪clip()函数的具体使用

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
CSS3 开发工具收集
Apr 17 HTML / CSS
纯css3(无图片/js)制作的几个社交媒体网站的图标
Mar 21 HTML / CSS
在HTML5中如何使用CSS建立不可选的文字
Oct 17 HTML / CSS
用React加CSS3实现微信拆红包动画效果
Mar 13 HTML / CSS
详解CSS3:overflow属性
Nov 17 HTML / CSS
IE9下html5初试小刀
Sep 21 HTML / CSS
html5 Canvas画图教程(1)—画图的基本常识
Jan 09 HTML / CSS
html5设计原理(推荐收藏)
May 17 HTML / CSS
html5的canvas方法使用指南
Dec 15 HTML / CSS
极简的HTML5模版
Jul 09 HTML / CSS
HTML实现代码雨源码及效果示例
Feb 25 HTML / CSS
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
Jan 20 HTML / CSS
html5.2 dialog简介详解
Feb 27 #HTML / CSS
Html5页面中的返回实现的方法
Feb 26 #HTML / CSS
简述Html5 IphoneX 适配方法
Feb 08 #HTML / CSS
canvas实现按住鼠标移动绘制出轨迹的示例代码
Feb 05 #HTML / CSS
canvas绘制视频封面的方法
Feb 05 #HTML / CSS
HTML5新特性之type=file文件上传功能
Feb 02 #HTML / CSS
HTML5 canvas 瀑布流文字效果的示例代码
Jan 31 #HTML / CSS
You might like
php 修改zen-cart下单和付款流程以防止漏单
2010/03/08 PHP
codeigniter教程之多文件上传使用示例
2014/02/11 PHP
ThinkPHP 3.2 版本升级了哪些内容
2015/03/05 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
ext combox 下拉框不出现自动提示,自动选中的解决方法
2010/02/24 Javascript
JS中setTimeout()的用法详解
2013/04/14 Javascript
window.print打印指定div实例代码
2013/12/13 Javascript
JS实现在页面随时自定义背景颜色的方法
2015/02/27 Javascript
javascript实现table表格隔行变色的方法
2015/05/13 Javascript
原生javascript实现读写CSS样式的方法详解
2017/02/20 Javascript
jquery实现页面加载效果
2017/02/21 Javascript
IE11下处理Promise及Vue的单项数据流问题
2019/07/24 Javascript
如何解决django配置settings时遇到Could not import settings 'conf.local'
2014/11/18 Python
python中range()与xrange()用法分析
2016/09/21 Python
Python中序列的修改、散列与切片详解
2017/08/27 Python
python 获取文件下所有文件或目录os.walk()的实例
2018/04/23 Python
python爬虫之模拟登陆csdn的实例代码
2018/05/18 Python
实用自动化运维Python脚本分享
2018/06/04 Python
用Python解决x的n次方问题
2019/02/08 Python
pymysql模块的使用(增删改查)详解
2019/09/09 Python
pytorch 使用加载训练好的模型做inference
2020/02/20 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
2020/02/29 Python
Python可以用来做什么
2020/11/23 Python
python 如何引入协程和原理分析
2020/11/30 Python
python 读取yaml文件的两种方法(在unittest中使用)
2020/12/01 Python
css3的图形3d翻转效果应用示例
2014/04/08 HTML / CSS
CSS3自定义滚动条样式 ::webkit-scrollbar的示例代码详解
2020/06/01 HTML / CSS
html5触摸事件判断滑动方向的实现
2018/06/05 HTML / CSS
中国跨境电商:Tomtop
2017/03/16 全球购物
美术师范毕业生自荐信
2013/11/16 职场文书
公司节能减排倡议书
2014/05/14 职场文书
厉行勤俭节约倡议书
2014/05/16 职场文书
2015年财务经理工作总结
2015/05/13 职场文书
如何写观后感
2015/06/19 职场文书
详解mysql三值逻辑与NULL
2021/05/19 MySQL
聊聊Python中关于a=[[]]*3的反思
2021/06/02 Python