当前位置: 首页 > news >正文

canvas绘制六芒星

在这里插入图片描述

查看专栏目录

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

文章目录

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

如何使用canvas绘制六芒星呢?它是由由两个正三角形组成 ,这里封装了一个函数regulaPolygon(cxt, n, dx, dy, R, angle, djs_fillColor, djs_strokeColor),可以设定两个正三边形,两个相差角度为60度。六芒星(Star of David) 又称大卫之星、大卫星、六角星等 六芒星象征着男女合一,孕育生命,代表着融合、圆满、吉祥,是护族符号。

示例效果图

在这里插入图片描述

示例源代码(共91行)


/*
* @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN)
* @此源代码版权归大剑师兰特所有,可供学习或商业项目中借鉴,未经授权,不得重复地发表到博客、论坛,问答,git等公共空间或网站中。
* @Email: 2909222303@qq.com
* @weixin: gis-dajianshi
* @First published in CSDN
* @First published time: 2024-01-22
*/
<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() {this.regulaPolygon(this.ctx, 3, 490, 245, 200, 30, 'transparent', 'red');this.regulaPolygon(this.ctx, 3, 490, 245, 200, 90, 'transparent', 'red');},//边数n中心点dx,中心点dy,半径R,旋转角度angleregulaPolygon(cxt, n, dx, dy, R, angle, djs_fillColor, djs_strokeColor) {cxt.beginPath();let degree = (2 * Math.PI) / n;let rangle = (angle * 2 * Math.PI) / 360;for (let i = 0; i < n; i++) {let x = Math.cos(i * degree - rangle);let y = Math.sin(i * degree - rangle);cxt.lineTo(x * R + dx, y * R + dy);}cxt.closePath();cxt.fillStyle = djs_fillColor;cxt.fill();cxt.strokeStyle = djs_strokeColor;cxt.stroke();}}}
</script>
<style scoped>.djs_container {width: 1000px;height: 680px;margin: 50px auto;border: 1px solid #991188;position: relative;}.top {margin: 0 auto 0px;padding: 10px 0;background: #991188;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.lryc.cn/news/285558.html

相关文章:

  • 全网最详细!!Python 爬虫快速入门
  • gitgud.io+Sapphire注册账号教程
  • 【动态规划】【广度优先搜索】【状态压缩】847 访问所有节点的最短路径
  • python基础小知识:引用和赋值的区别
  • 欧科云链与《警察技术》联合发布技术专题.pdf
  • 【QT+QGIS跨平台编译】之一:【sqlite+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
  • websocket实现聊天室(vue2 + node)
  • RabbitMQ-消息延迟
  • 【Oracle】如何给物化视图分区
  • 10个常考的前端手写题,你全都会吗?
  • vue组件间通信
  • 编程框架概述:MVC, MVP, MVVM, Flux/Redux, 和 Clean Architecture
  • 多维时序 | Matlab实现CNN-BiLSTM-Mutilhead-Attention卷积双向长短期记忆神经网络融合多头注意力机制多变量时间序列预测
  • np.argsort排序问题(关于位次)-含GitHub上在numpy项目下提问的回复-总结可行方案
  • Element中的el-input-number+SpringBoot+mysql
  • Jupyter Notebook五分钟基础速通
  • 基于SpringBoot的SSM整合案例
  • [SS]语义分割_转置卷积
  • 面板小程序命令行工具介绍
  • DBA技术栈MongoDB: 数据增改删除
  • Xcode查看APP文件目录
  • 【视频媒体】深入了解直播视频流
  • 【01】mapbox js api加载arcgis切片服务
  • 图像分割实战-系列教程15:deeplabV3+ VOC分割实战3-------网络结构1
  • 【Docker】安装nacos以及实现负载均衡
  • 如何用数据赋能社媒营销决策?
  • 初识k8s(概述、原理、安装)
  • 【Java】Maven的基本使用
  • 【RT-DETR有效改进】遥感旋转网络 | LSKNet动态的空间感受野网络(轻量又提点)
  • 【进阶之路】如何提升 Java 编程内力?