canvas设置渐变色文字(线性、径向)

在这里插入图片描述

查看专栏目录

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

文章目录

    • 线性渐变语法及参数
    • 径向渐变语法及参数
    • 示例效果图
    • 示例源代码(共124行)
    • canvas基本属性
    • canvas基础方法

如何使用canvas设置渐变色文字呢?这里分为设置线性渐变(createLinearGradient)和径向渐变(createRadialGradient)。请使用该对象作为 strokeStyle 或 fillStyle 属性的值。

线性渐变语法及参数

context.createLinearGradient(x0,y0,x1,y1);

x0 渐变开始点的 x 坐标
y0 渐变开始点的 y 坐标
x1 渐变结束点的 x 坐标
y1 渐变结束点的 y 坐标

径向渐变语法及参数

context.createRadialGradient(x0,y0,r0,x1,y1,r1);

x0 渐变的开始圆的 x 坐标
y0 渐变的开始圆的 y 坐标
r0 开始圆的半径
x1 渐变的结束圆的 x 坐标
y1 渐变的结束圆的 y 坐标
r1 结束圆的半径

示例效果图

在这里插入图片描述

示例源代码(共124行)

/*
* @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN)
* @此源代码版权归大剑师兰特所有,可供学习或商业项目中借鉴,未经授权,不得重复地发表到博客、论坛,问答,git等公共空间或网站中。
* @Email: 2909222303@qq.com
* @weixin: gis-dajianshi
* @First published in CSDN
* @First published time: 2024-01-13
*/
<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="success" size="mini" @click="draw3()">径向渐变背景</el-button>
				<el-button type="success" size="mini" @click="draw4()">径向渐变文字</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,
			}
		},
		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()
				let gradient = this.ctx.createLinearGradient(0, 0, this.canvas.width, this.canvas.height);
				gradient.addColorStop(0,'blue');
				gradient.addColorStop(0.25,'yellow');
				gradient.addColorStop(0.5, 'white');
				gradient.addColorStop(0.75, 'red');
				gradient.addColorStop(1.0,'green');
				this.ctx.fillStyle = gradient;
				this.ctx.fillRect(0,0, this.canvas.width,this.canvas.height); 
			},
			draw2() {
				this.clearCanvas()
				let gradient = this.ctx.createLinearGradient(0, 0, this.canvas.width, this.canvas.height);
				gradient.addColorStop(0,'blue');
				gradient.addColorStop(0.25,'yellow');
				gradient.addColorStop(0.5, 'white');
				gradient.addColorStop(0.75, 'red');
				gradient.addColorStop(1.0,'green');
				this.ctx.fillStyle = gradient;
				this.ctx.font = '80px STheiti, SimHei';
				this.ctx.fillText('还是大剑师兰特', 224, 266);
				
			},
			draw3() {
				this.clearCanvas()
				let gradient = this.ctx.createRadialGradient(490, 245, 20, 490, 245, 200);
				gradient.addColorStop(0,'blue');
				gradient.addColorStop(0.25,'yellow');
				gradient.addColorStop(0.5, 'white');
				gradient.addColorStop(0.75, 'red');
				gradient.addColorStop(1.0,'green');
				this.ctx.fillStyle = gradient;
				this.ctx.fillRect(0,0, this.canvas.width,this.canvas.height); 
			},
			draw4() {
				this.clearCanvas()
				let gradient = this.ctx.createRadialGradient(490, 245, 20, 490, 245, 200);
				gradient.addColorStop(0,'blue');
				gradient.addColorStop(0.25,'yellow');
				gradient.addColorStop(0.5, 'white');
				gradient.addColorStop(0.75, 'red');
				gradient.addColorStop(1.0,'green');
				this.ctx.fillStyle = gradient;
				this.ctx.font = '80px STheiti, SimHei';
				this.ctx.fillText('还是大剑师兰特', 224, 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>


canvas基本属性

属性属性属性
canvasfillStylefilter
fontglobalAlphaglobalCompositeOperation
heightlineCaplineDashOffset
lineJoinlineWidthmiterLimit
shadowBlurshadowColorshadowOffsetX
shadowOffsetYstrokeStyletextAlign
textBaselinewidth

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/318257.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ssm基于JAVA的酒店客房管理系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本酒店客房管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息…

JAVA实现循环日期加一天

一、业务背景 现在数据库新增字段需要区分平日(0)和假期(1)的数据&#xff0c;之前有一批去年的数据都没有算过&#xff0c;所以得用日期循环来根据实际的时间来修改对应的数值&#xff0c;废话不多说看具体操作方法。 二、操作方法 // 初始日期 String dateString "20…

谷粒商城项目|es的应用场景及常见问题

es是什么 es多被用于搜索聚合分析引擎 是分布式的可以高性能查询的引擎 es应用场景 为什么不用MYSQL而用es es将数据存在内存中且可以分布式的存储数据 商品上架 商品在es中的保存 1.在es中建立索引 spu sku spu sku保存在一起防止分布查询 为了防止对象数组扁平化&#xff…

NetDevOps:华三交换机通过Netmiko或者Nornir获取接口信息通过TextFSM解析报错问题

python代码&#xff1a;实现功能获取交换机接口信息并通过TextFSM进行解析。 from netmiko import Netmiko import textfsm show_intf_cmd_mapping {hp_comware: display interface, }def ssh_device_2_get_intfs(device_type, host, username, password, port):dev_info {d…

微机原理常考填空总结

hello大家好我是吃个西瓜嘤&#xff0c;这篇节只总结微机原理常考填空题都是干货展示常出现的易错点以及微机原理注意事项。 以下仅代表个人发言 #微机原理 正文开始&#xff1a; 1&#xff0c;区分JZ&#xff0c;JNZ技巧 也就是D70用JZ&#xff1b;D71用JNZ。 JZ;条件ZF1时…

LLM之RAG实战(十四)| 利用LongContextRetriver克服RAG中的中间丢失现象

人类和大型语言模型&#xff08;LLM&#xff09;都有一个共同的行为模式&#xff1a;他们往往擅长处理位于给定内容开头或结尾的信息&#xff0c;而中间的信息往往会被忽视。 来自斯坦福大学、加州大学伯克利分校和Samaya AI的研究人员在论文《Lost in the Middle: How Languag…

安装MySQL

采用ubuntu系统&#xff0c;安装MySQL5.7 安装 下载apt仓库文件 #下载apt仓库的安装包&#xff0c;Ubuntu的安装包是.deb文件 wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb配置apt仓库 #使用dpkg命令安装仓库dpkg -i mysql-apt-config_0.8.12-1_all.…

大模型实战营Day3 作业

基础作业&#xff1a; 复现课程知识库助手搭建过程 (截图) 进阶作业&#xff1a; 选择一个垂直领域&#xff0c;收集该领域的专业资料构建专业知识库&#xff0c;并搭建专业问答助手&#xff0c;并在 OpenXLab 上成功部署&#xff08;截图&#xff0c;并提供应用地址&#xf…

Nacos和Eureka比较、统一配置管理、Nacos热更新、多环境配置共享、Nacos集群搭建步骤

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Nacos和eureka的对比二、统一配置管理二、Nacos热更新方式一方式二 三、多环境配置共享四、Nacos集群搭建步骤&#xff08;黑马springCloud的p29&#xff0…

简单明了,汽车级LM317系列LM317D2TR4G线性电压稳压器电源设计-参数应用方案分享

低压差线性稳压器&#xff08;LDO&#xff09;&#xff0c;是指一种具有恒定电流输出电压的装置&#xff0c;主要由输入变压器、整流器、输出变压器三部分构成&#xff0c;工业原理为将输入的交流电压经过整流、滤波后得到直流输出电压&#xff0c;再经过控制元件和开关器件将稳…

暄桐写字计划 | 开始布局我们的2024

暄桐是一间传统美学教育教室&#xff0c;创办于2011年&#xff0c;林曦是创办人和授课老师&#xff0c;教授以书法为主的传统文化和技艺&#xff0c;皆在以书法为起点&#xff0c;亲近中国传统之美&#xff0c;以实践和所得&#xff0c;滋养当下生活。      暄桐林曦老师有…

【自译】【精华】MIT麻省理工学院技术双月刊(The Bimonthly MIT Technology Review)2024年1~2月【创新版块概览(一)】

导读&#xff1a; 今年是 《MIT技术评论杂志》 创刊125周年纪念年&#xff08;该杂志自1899年创刊&#xff09;&#xff0c;笔者将2024开年第1期&#xff08;1月~2月号&#xff09;的创新版块&#xff08;Innovation Issue&#xff09;中的重要内容进行梳理&#xff0c;获得近年…

紫光展锐M6780丨画质增强——更炫的视觉体验

智能显示被认为是推动数字化转型和创新的重要技术之一。研究机构数据显示&#xff0c;预计到2035年底&#xff0c;全球智能显示市场规模将达到1368.6亿美元&#xff0c;2023-2035年符合年增长率为36.4%。 随着消费者对高品质视觉体验的需求不断增加&#xff0c;智能手机、平板…

二十几种未授权访问漏洞合集

未授权访问漏洞是一个在企业内部非常常见的问题&#xff0c;这种问题通常都是由于安全配置不当、认证页面存在缺陷&#xff0c;或者压根就没有认证导致的。当某企业对外的服务端口、功能无限制开放&#xff0c;并且对用户的访问没有做任何限制的时候&#xff0c;可能会泄露出某…

JavaScript常用事件详解

一、用于form&#xff08;表单&#xff09;的事件 在网页中经常会遇到一些表单的验证&#xff0c;是通过事件进行处理的&#xff0c;比如用户输入用户名之后&#xff0c;及时显示用户是否被注册 用于form&#xff08;表单&#xff09;的事件 事件名功能 onblur 当元素失…

基于OpenCV的谷物颗粒识别

基于OpenCV的谷物颗粒识别 一、程序整体功能介绍1.1 导入库与函数定义1.2 颜色分割与灰度处理1.3 二值化与轮廓检测1.4 绘制与计数1.5 主程序与结果展示 二、算法原理与实现流程2.1算法原理&#xff08;1&#xff09;颜色分割&#xff08;2&#xff09;灰度处理与二值化&#x…

ubuntu安装node

1 下载 node 官网下载 如果需要其他版本&#xff0c;点击上图的Other Downloads 这里下载的版本是20.11.0 Linux Binaries (x64)&#xff0c;下载下来后是node-v20.11.0-linux-x64.tar.xz这样的格式&#xff0c;直接右键解压得到如下目录&#xff1a; 直接拷贝该文件夹到指定目…

哈希表的实现(1)----除留余数法实现

一&#xff0c;哈希表的介绍 哈希表是一种通过哈希思想实现的一种数据结构。哈希表这种数据结构的特点便是可以通过一个值快速的定位这个值所在的位置实现插入&#xff0c;删除&#xff0c;查找。在这篇博客里面&#xff0c;我们便来实现一个通过除留余数法实现的一个哈希表。 …

Alibaba-> EasyExcel 整理3

1 导入依赖 <!-- easyExcel --><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version >3.2.1</version><exclusions><exclusion><artifactId>poi-ooxml-schemas</art…

基于SpringBoot+Vue实现的二手交易系统

系统介绍 校园二手交易网站是一种专门针对有二手物品交易需求用户的二手交易的网站。它的设计和开发主要是为了满足用户之间的二手物品交易需求&#xff0c;方便大家在线买卖二手物品。近年来&#xff0c;随着互联网技术的发展&#xff0c;人们越来越喜欢在线购物&#xff0c;…