canvas设置圆锥形渐变

查看专栏目录

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

文章目录

如何使用canvas设置圆锥形渐变呢? canvas createConicGradient() 方法返回一个圆锥形 CanvasGradient。 要应用于形状,必须首先将渐变指定给 fillStyle 或 strokeStyle 属性。

圆锥形渐变语法及参数

createConicGradient(startAngle, x, y)

参数 image

startAngle:起始的角度(正向右开始)

x,y:圆锥的中心点

示例效果图

示例源代码(共124行)

javascript 复制代码
/*
* @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN)
* @此源代码版权归大剑师兰特所有,可供学习或商业项目中借鉴,未经授权,不得重复地发表到博客、论坛,问答,git等公共空间或网站中。
* @Email: 2909222303@qq.com
* @weixin: gis-dajianshi
* @First published in CSDN
* @First published time: 2024-01-14
*/
<template>
	<div class="djs_container">
		<div class="top">
			<h3>canvas设置圆锥形渐变</h3>
			<div>大剑师兰特, 还是大剑师兰特,gis-dajianshi</div>
			<h4>
				<el-button type="primary" 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="490"></canvas>
		</div>

	</div>
</template>
<script>
	export default {
		data() {
			return {
				ctx: null,
				canvas: null,
				imgData: require("@/assets/tx.png")
			}
		},
		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");
			},
			draw1() {
				this.clearCanvas()
				// The start angle is 0
				// The center position is 490, 245
				const gradient = this.ctx.createConicGradient(0, 490, 245);
				gradient.addColorStop(0, "red");
				gradient.addColorStop(0.25, "orange");
				gradient.addColorStop(0.5, "yellow");
				gradient.addColorStop(0.75, "green");
				gradient.addColorStop(1, "blue");
				this.ctx.fillStyle = gradient;
				this.ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);

			},
			draw2() {
				this.clearCanvas()
				const gradient = this.ctx.createConicGradient(0, 490, 245);
				gradient.addColorStop(0, "red");
				gradient.addColorStop(0.25, "orange");
				gradient.addColorStop(0.5, "yellow");
				gradient.addColorStop(0.75, "green");
				gradient.addColorStop(1, "blue");
				this.ctx.fillStyle = gradient;
				this.ctx.font = '120px STheiti, SimHei';
				this.ctx.fillText('还是大剑师兰特', 64, 266);
			},
		}
	}
</script>

<style scoped>
	.djs_container {
		width: 1000px;
		height: 680px;
		margin: 50px auto;
		border: 1px solid #994170;
		position: relative;
	}

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

	.dajianshi {
		margin: 5px auto 0;
		border: 1px solid #ccc;
		width: 980px;
		height: 490px;
		background-color: #f9f9f9;
	}
</style>

参考API

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

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()