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

vue3 svg图像 的实例

1、先上个图,来自官方:

2、说明:图形包括三个组件,一个是多边形、一个圆、一个text(A,B,C,D,E,F...)。

3、图形定义:

<svg width="200" height="200"><PolyGraph :stats="stats"></PolyGraph></svg>

这个PolyGraph是一个自定义SFC:

<script setup>
import AxisLabel from './AxisLabel.vue'
import { computed } from 'vue'
import { valueToPoint } from './util.js'const props = defineProps({stats: Array
})const points = computed(() => {const total = props.stats.lengthreturn props.stats.map((stat, i) => {const { x, y } = valueToPoint(stat.value, i, total)return `${x},${y}`}).join(' ')
})
</script><template><g><polygon :points="points"></polygon><circle cx="100" cy="100" r="80"></circle><axis-labelv-for="(stat, index) in stats":stat="stat":index="index":total="stats.length"></axis-label></g>
</template>

说明:定义一个props: stats是一个数组,points:方法是将值转为坐标,并且用‘  ’空格连接,这个与SVG中的多边形的points是一致。

polygon:svg中显示多边形的关键词。

circle:svg中的圆,由圆心(cx,cy),及半径r组成。

axis-label:是一组text,是自定义SFC:

<script setup>
import { computed } from 'vue'
import { valueToPoint } from './util.js'const props = defineProps({stat: Object,index: Number,total: Number
})const point = computed(() =>valueToPoint(+props.stat.value + 10, props.index, props.total)
)
</script><template><text :x="point.x" :y="point.y">{{stat.label}}</text>
</template>

4、函数说明:

export function valueToPoint(value, index, total) {const x = 0const y = -value * 0.8const angle = ((Math.PI * 2) / total) * indexconst cos = Math.cos(angle)const sin = Math.sin(angle)const tx = x * cos - y * sin + 100const ty = x * sin + y * cos + 100return {x: tx,y: ty}
}

说明:

angle:(Math.PI * 2) / total),将一个圆周,分成total分。

cos0:1

sin0:0

将value值,通过index ,来转换为对应的坐标,这个100与圆有关系,可以加以修改,这样就会平移不同的value。

5、最后官方地址:https://cn.vuejs.org/examples/#svg

可以亲自测试下,然后想一想。


http://www.mrgr.cn/news/58976.html

相关文章:

  • 等保测评的主要内容
  • 【华为HCIP实战课程二十】OSPF特殊区域NSSA配置详解,网络工程师
  • 算法的学习笔记—平衡二叉树(牛客JZ79)
  • 重生之“我打数据结构,真的假的?”--3.栈和队列(无习题)
  • 【笔记】apt源设置为阿里云源
  • ECharts图表图例知识点小结
  • Linux中级(DNS域名解析服务器)
  • 代码随想录算法训练营第二十六天|Day26 贪心算法
  • 1.Linux按键驱动
  • Qgis 开发初级 《ToolBox》
  • 2024年华为OD机试真题-矩形相交面积-Java-OD统一考试(E卷)
  • FreeSWITCH 简单图形化界面32 - 判断手机号归属地,自动补0
  • World of Warcraft [CLASSIC][80][the Ulduar]
  • HarmonyOS 组件样式@Style 、 @Extend、自定义扩展(AttributeModifier、AttributeUpdater)
  • C++中红黑树的实现
  • 银行测试干货:一文吃透银行业务重难点
  • nfs服务部署案例
  • std::abs 和 abs 是一样的吗?
  • alovajs:前后端交互还能这么玩?
  • C#里使用高效内存接收的例子
  • 005:PTGui全景拼接工具安装教程
  • 动态规划之子序列问题(上)
  • C++之继承
  • Java中Set接口与实现类的使用
  • Qt/C++ 调用迅雷开放下载引擎(ThunderOpenSDK)下载数据资源
  • 【从零开始的LeetCode-算法】3223. 操作后字符串的最短长度