canvas绘制不同样式的五角星(图文示例)

news2024/11/25 5:01:54

在这里插入图片描述

查看专栏目录

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

文章目录

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

如何使用canvas绘制不同样式的五角星呢?这里面要确定每个五角星围绕中心点的角度是72度,这里封装了一个函数star(ctx, x, y, R, r, angle,fillColor,strokeColor),可以设定不同的值,来产生不同样式的五角星。

示例效果图

在这里插入图片描述

示例源代码(共88行)


/*
* @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN)
* @此源代码版权归大剑师兰特所有,可供学习或商业项目中借鉴,未经授权,不得重复地发表到博客、论坛,问答,git等公共空间或网站中。
* @Email: 2909222303@qq.com
* @weixin: gis-dajianshi
* @First published in CSDN
* @First published time: 2024-01-18
*/
<template>
	<div class="djs_container">
		<div class="top">
			<h3>canvas绘制不同样式的五角星</h3>
			<div>大剑师兰特, 还是大剑师兰特,gis-dajianshi</div>
			<h4>
				<el-button type="primary" size="mini" @click="draw()">绘制</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");
			},
			draw() {
				let c = this.$refs.mycanvas;
				this.star(this.ctx, 490, 245, 200, 80, 0,'red','orange');
				this.star(this.ctx, 190, 245, 100, 30, 0,'green','orange');
				this.star(this.ctx, 790, 245, 100, 60, 0,'blue','orange');				
			},
			star(ctx, x, y, R, r, angle,fillColor,strokeColor) {   //中心点x,中心点y,大半径R,小半径r,旋转角度angle
				ctx.beginPath();
				for (var i = 0; i < 5; i++) {
					ctx.lineTo(Math.cos((18 + i * 72 - angle) / 180 * Math.PI) * R + x, -Math.sin((18 + i * 72 - angle) /
						180 * Math.PI) * R + y);
					ctx.lineTo(Math.cos((54 + i * 72 - angle) / 180 * Math.PI) * r + x, -Math.sin((54 + i * 72 - angle) /
						180 * Math.PI) * r + y);
				}
				ctx.closePath();
				ctx.fillStyle = fillColor;
				ctx.strokeStyle = strokeColor;
				ctx.lineWidth = 3;
				ctx.lineJoin = "round";
				ctx.fill();
				ctx.stroke();
			}
		}
	}
</script>
<style scoped>
	.djs_container {
		width: 1000px;
		height: 680px;
		margin: 50px auto;
		border: 1px solid #9944bb;
		position: relative;
	}
	.top {
		margin: 0 auto 0px;
		padding: 10px 0;
		background: #9944bb;
		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()

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

十三、Qt 操作PDF文件放大缩小

一、在《十、Qt 操作PDF文件-CSDN博客》中我们用Poppler类库打开了PDF文件&#xff0c;在《十二、Qt 操作PDF文件(2)-CSDN博客》介绍了通过按钮进行上一页、下一页、跳转到某一页等功能&#xff0c;在本章节中&#xff0c;加入了 通过鼠标滚轮可以翻页。通过按住Ctrl鼠标滚轮可…

【十进制与二进制如何转换?推荐一个超好用的公式编辑器】

在计算机科学和电子工程中&#xff0c;二进制是一种非常重要的数字系统&#xff0c;因为它在数字处理和数据传输中被广泛使用。因此&#xff0c;理解如何将十进制数转换为二进制数是非常重要的。 可以使这个计算过程更加简单和快速。而且还可以用于其他数学方程式的编写和编辑。…

香港服务器带宽大点的(香港大带宽推荐)

在当今数字化时代&#xff0c;服务器带宽成为了企业发展的重要基石。对于需要处理大量数据和流量的企业来说&#xff0c;选择一款带宽充足、性能稳定的服务器是至关重要的。香港作为全球互联网的中心之一&#xff0c;其服务器带宽质量备受关注。本文将为您推荐几款香港大带宽服…

MySQL下对[库]的操作

目录 创建数据库 创建一个数据库案例&#xff1a; 字符集和校验规则&#xff1a; 默认字符集&#xff1a; 默认校验规则&#xff1a; 查看数据库支持的字符集&#xff1a; 查看数据库支持的字符集校验规则&#xff1a; 校验规则对数据库的影响&#xff1a; 操作数据…

黑马程序员JS基础笔记

js基础 软件第一天第二天 第三天第四天第五天 软件 截图软件snipaste esc取消 f1后再f1可取色&#xff0c;shift可换十六进制&#xff0c;c复制 画笔软件 思维导图软件 笔记软件 vscode报错插件Error Lens 第一天 组成&#xff1a;ECMAScriptWeb APIs(DOMBOM) 权威网站…

Tensorflow2.0笔记 - 基础数学运算

本笔记主要记录基于元素操作的,-,*,/,//,%,**,log,exp等运算&#xff0c;矩阵乘法运算&#xff0c;多维tensor乘法相关运算 import tensorflow as tf import numpy as nptf.__version__#element-wise运算&#xff0c;对应元素的,-,*,/,**,//,% tensor1 tf.fill([3,3], 4) ten…

前端面试题-CSS3新增特性

增加了transition过渡和animation动画 transition过渡,可以实现元素状态的渐变效果&#xff0c;即当元素的状态发生变化时&#xff0c;元素会平滑的过渡到新的状态。要使用transition属性&#xff0c;需要指定要执行过渡效果的属性&#xff0c;过渡效果的持续时间&#xff0c;…

空间数据结构(四叉树、八叉树、BVH树、BSP树、k-d树)

一. 前言 在游戏程序中&#xff0c;利用空间数据结构加速计算往往是非常重要的优化思想&#xff0c;空间数据结构可以应用于场景管理、渲染、物理、游戏逻辑等方面。 二、多叉树 2.1 四叉树 四叉树是很常见的一种 2D 碰撞检测方法&#xff0c;实现手段也五花八门。不过在具体…

多语言客服系统:企业全球化战略的关键

随着全球化的发展&#xff0c;越来越多的企业开始将目光投向国际市场。然而&#xff0c;随之而来的挑战是如何有效地与不同语言和文化背景的客户进行沟通和交流。在这个多元化的时代&#xff0c;多语言客服系统成为了企业全球化战略的关键。 一、多语言客服系统的定义 多语言客…

【Elsevier】“有史以来最快的一次投稿”,1个月零4天录用,录用率60%,国人友好!

发表说 截图来源&#xff1a;LetPub 01 期刊概况 Optical Materials 【出版社】Elsevier 【ISSN】0925-3467 【检索情况】SCI&EI双检 【WOS收录年份】1994年 【出刊频率】月刊&#xff0c;最新一期Volume 148 &#xff0c;In progress (February 2024) 【期刊官网】 …

[AutoSar]BSW_OS 02 Autosar OS_STACK

目录 关键词平台说明一、 task stack1.1 Task stack 的共享1.2 task stack 的实际使用大小 二、ISR stack2.1 ISR stack 的共享 三、Single-stack&#xff08;单一栈&#xff09;和multi-stack &#xff08;多栈&#xff09;策略3.1 Single-stack3.2 multi-stack 四、Stack Che…

从 `go build` 到 `go test`:Go 语言命令行工具全解析

从 go build 到 go test&#xff1a;Go 语言命令行工具全解析 引言go build 命令详解go test 的运用其他重要的 Go 命令结论 引言 在当今的软件开发领域&#xff0c;Go 语言以其简洁、高效和强大的并发处理能力受到广泛的欢迎。作为一门现代编程语言&#xff0c;Go 不仅拥有丰…

2024Navicat最新下载安装教程

下载 下载链接&#xff1a;链接 选择自己想下载的&#xff0c;我下载的是Navicat Premium 16 点击直接下载 安装 下载好后双击打开安装&#xff0c;下一步 同意&#xff0c;下一步 选择安装位置&#xff0c;下一步 安装 安装完成&#xff0c;安装完成后先不要打开 …

OSI七层协议和五层协议

【 1 】互联网协议交互的基础 硬件设备 光缆 【 2 】OSI七层协议 物理层&#xff08;Physical Layer&#xff09;&#xff1a;负责传输比特流&#xff08;0和1&#xff09;以及物理连接的建立和维护。数据链路层&#xff08;Data Link Layer&#xff09;&#xff1a;提供可…

eNSP学习—— 终端跨二层交换机连接三层网关设备进行通信

组网需求&#xff1a; HOSTA 和 HOSTB、HOSTC 和 HOSTD 分属研发部和质量部&#xff0c;两部门通过一台二层交换 机互联&#xff0c;两部门有业务往来&#xff0c;需要二层隔离&#xff0c;三层通信。 配置思路 &#xff1a; 1.将 SwitchB 连接终端 HOST 的接口加入 vlan&…

vue2+webpack升级vue3+vite,报错Cannot read properties of null (reading ‘isCE‘)

同学们可以私信我加入学习群&#xff01; 正文开始 前言问题分析解决总结 前言 系列文章&#xff1a;vue2webpack升级vue3vite&#xff0c;修改插件兼容性bug 前面的文章主要是介绍&#xff0c;在升级初始阶段遇到的一些显而易见的兼容性问题和bug。随着项目迭代的不断深入&a…

220v变5vic-220v变直流5v小封装220MA电流

220v变5v ic-220v变直流5v小封装220MA电流&#xff0c;交流或者直流输入都可以&#xff0c;交流输入的时候输入端需要先整流&#xff08;半波、全波都可以&#xff09;&#xff0c;40v~265v输入&#xff0c;经过220v变5v ic芯片电路&#xff0c;稳定输出5v200MA电流&#xff0c…

配置https---Nginx认证ssl证书

nginx作为前端的负载均衡服务器已经很熟悉了,项目需要使用https安全的时候就需要认证证书了 dockerweb管理工具 Portainer 如果对docker不那么熟悉可以使用docker 第三方管理端 docker run -d --restartalways --name portainer -p 9000:9000 -v /var/run/docker.sock:/var/…

【机组】通用寄存器单元实验的解密与实战

​&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《机组 | 模块单元实验》⏰诗赋清音&#xff1a;云生高巅梦远游&#xff0c; 星光点缀碧海愁。 山川深邃情难晤&#xff0c; 剑气凌云志自修。 ​ 目录 &#x1f33a;一、 实验目…

Spring MVC——Spring MVC(2)

1.参数接收 Springmvc中&#xff0c;接收页面提交的数据是通过方法形参来接收&#xff1a; 处理器适配器调用springmvc使用反射将前端提交的参数传递给controller方法的形参 springmvc接收的参数都是String类型&#xff0c;所以spirngmvc提供了很多converter&#xff08;转换…