canvas路径剪裁clip(图文示例)

在这里插入图片描述

查看专栏目录

canvas实例应用100+专栏,提供canvas的基础知识,高级动画,相关应用扩展等信息。canvas作为html的一部分,是图像图标地图可视化的一个重要的基础,学好了canvas,在其他的一些应用上将会起到非常重要的帮助。

文章目录

    • 示例效果图
    • 示例源代码(共94行)
    • 相关API
    • canvas基本属性
    • canvas基础方法

canvas如何路径剪裁呢?clip()表示路径剪裁。使用时候,先绘制剪裁路径,执行clip()方法,再绘制的内容就在这个剪裁路径中呈现。

语法:

context.clip();
context.clip(fillRule);
context.clip(path, fillRule);

fillRuleString
填充规则。用来确定一个点实在路径内还是路径外。可选值包括:

  1. nonzero:非零规则。此乃默认规则。
  2. evenodd:奇偶规则。

关于’nonzero’和’evenodd’规则可参见这篇文章。

pathObject
指Path2D对象。

示例效果图

在这里插入图片描述

示例源代码(共94行)


/*
* @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN)
* @此源代码版权归大剑师兰特所有,可供学习或商业项目中借鉴,未经授权,不得重复地发表到博客、论坛,问答,git等公共空间或网站中。
* @Email: 2909222303@qq.com
* @weixin: gis-dajianshi
* @First published in CSDN
* @First published time: 2024-02-02
*/
<template>
	<div class="djs_container">
		<div class="top">
			<h3>canvas路径剪裁clip</h3>
			<div>大剑师兰特, 还是大剑师兰特,gis-dajianshi</div>
			<h4>
				<el-button type="success" size="mini" @click="draw1()">未剪裁状态</el-button>
				<el-button type="primary" size="mini" @click="draw2()">剪裁后状态</el-button>
                <el-button type="danger" size="mini" @click="clearCanvas()">清除画屏</el-button>
			</h4>
		</div>
		<div class="dajianshi ">
			<canvas id="dajianshi" ref="mycanvas" width="980" height="480"></canvas>
		</div>
	</div>
</template>
<script>
	export default {
   
		data() {
   
			return {
   
				ctx: null,
				canvas: null,
			}
		},
		mounted() {
   
			this.setCanvas()
		},
		methods: {
   
			clearCanvas() {
   				
				this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
			},
			setCanvas() {
   
				this.canvas = document.getElementById('dajianshi');
				if (!this.canvas.getContext) return;
				this.ctx = this.canvas.getContext("2d");
				this.ctx.fillStyle='orange';
				this.ctx.save();
			},
			
			draw1() {
   
				
				this.clearCanvas(); 
				this.ctx.beginPath();
				this.ctx.fillRect(100,100,400,300);	
			},
			draw2() {
   
				this.ctx.save();
				this.clearCanvas(); 
				this.ctx.beginPath();
				this.ctx.moveTo(20, 20);
				this.ctx.lineTo(500, 480);
				this.ctx.lineTo(410, 350);
				this.ctx.clip();
				    // 填充图片
				this.ctx.fillRect(100,100,400,300)	
				this.ctx.restore();
			},
		}
	}
</script>
<style scoped>
	.djs_container {
   
		width: 1000px;
		height: 680px;
		margin: 50px auto;
		border: 1px solid #222;
		position: relative;
	}

	.top {
   
		margin: 0 auto 0px;
		padding: 10px 0;
		background: #222;
		color: #fff;
	}

	.dajianshi {
   
		margin: 5px auto 0;
		border: 1px solid #cde;
		width: 980px;
		height: 480px;
		background-color: #eee;
	}
	
	.top>>>.el-button{
    margin-bottom: 8px;}
</style>


相关API

https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/clip

canvas基本属性

属性 属性 属性
canvas fillStyle filter
font globalAlpha globalCompositeOperation
height lineCap lineDashOffset
lineJoin lineWidth miterLimit
shadowBlur shadowColor shadowOffsetX
shadowOffsetY strokeStyle textAlign
textBaseline width

canvas基础方法

方法 方法 方法
arc() arcTo() addColorStop()
beginPath() bezierCurveTo() clearRect()
clip() close() closePath()
createImageData() createLinearGradient() createPattern()
createRadialGradient() drawFocusIfNeeded() drawImage()
ellipse() fill() fillRect()
fillText() getImageData() getLineDash()
isPointInPath() isPointInStroke() lineTo()
measureText() moveTo() putImageData()
quadraticCurveTo() rect() restore()
rotate() save() scale()
setLineDash() setTransform() stroke()
strokeRect() strokeText() transform()
translate()

相关推荐

  1. 【WPF】图片剪裁-ImageCropping

    2024-02-02 11:00:04       22 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-02 11:00:04       75 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-02 11:00:04       80 阅读
  3. 在Django里面运行非项目文件

    2024-02-02 11:00:04       64 阅读
  4. Python语言-面向对象

    2024-02-02 11:00:04       75 阅读

热门阅读

  1. Django_项目基本配置

    2024-02-02 11:00:04       52 阅读
  2. LVS负载均衡对udp流量进行参数调整一例

    2024-02-02 11:00:04       45 阅读
  3. 使用Vue-Grid-Layout实现自定义工作台

    2024-02-02 11:00:04       46 阅读
  4. MFC 原生LsitCtrl单元格嵌入图标

    2024-02-02 11:00:04       50 阅读
  5. 硬件在环测试系统-HIL

    2024-02-02 11:00:04       47 阅读
  6. 为什么要使用A/B测试?

    2024-02-02 11:00:04       53 阅读
  7. RecyclerView总结

    2024-02-02 11:00:04       45 阅读
  8. Docker第五章 : Docker仓库

    2024-02-02 11:00:04       54 阅读