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

Konva 组,层级

代码:

<template><div class="rect"><div class="header">
<!--      <el-button type="primary" @click="show">展示</el-button>-->
<!--      <el-button type="success" @click="hide">隐藏</el-button>--><el-button type="warning" @click="moveToTop">置顶</el-button><el-button type="danger" @click="moveToBottom">置地</el-button><el-button type="info" @click="moveUp">上移一层</el-button><el-button type="success" @click="moveDown">下移一层</el-button></div><div id="canvas"></div></div>
</template>
<script setup lang="ts">
import {onMounted} from 'vue'
import Konva from 'konva'let  stage:Konva.Stage | null=null
const layer:Konva.Layer=new Konva.Layer()
const group :Konva.Group=new Konva.Group()onMounted(()=>{init()
})
const init=()=> {const el = document.getElementById("canvas")if (!el) {return}const { clientWidth, clientHeight } = el//创建一个stage平台stage = new Konva.Stage({container: 'canvas',width: clientWidth,height: clientHeight,})stage.add(layer)//矩形group.setAttrs({x:clientWidth/2,y:clientHeight/2,draggable:true})
const colors=["#ff8800","#ff0000","#ff00ff","#00ffff"]for (let i=0;i<4;i++){const rect=new Konva.Rect({//给图形添加id和名称,方便之后通过id和名称查找图形id:`rect${i}`,name:"textName",x:i * 20,y:i * 20,width:100,height:50,fill:colors[i],stroke:'black',strokeWidth:1,draggable:true})group.add(rect)}layer.add(group)
}
const moveToTop=()=>{if (!stage){return}const shapes=stage.findOne("#rect0")shapes?.moveToTop()
}
const moveToBottom=()=>{if (!stage){return}const shapes=stage.findOne("#rect0")shapes?.moveToBottom()}
const moveUp=()=>{if (!stage){return}const shapes=stage.findOne("#rect0")shapes?.moveUp()}
const moveDown=()=>{if (!stage){return}const shapes=stage.findOne("#rect0")shapes?.moveDown()}
const show=()=>{if (!stage){return}
//  const shapes=stage.findOne("#textId")//通过id查找// const shapes=stage?.findOne(".textName")//通过名称const shapes=stage?.findOne("Rect")//通过图形的类别来查找console.log(shapes)//设置展示shapes.show()}
const hide=()=>{if (!stage){return}
//  const shapes=stage.findOne("#textId")//通过id查找// const shapes=stage?.findOne(".textName")//通过名称const shapes=stage?.findOne("Rect")//通过图形的类别来查找console.log(shapes)//设置展示shapes.hide()}
</script><style scoped lang="scss">
.rect {padding: 20px;.header{height: 50px;}#canvas {background-color: #eee;border: 1px solid #666;height: calc(100vh - 92px);}
}
</style>

 

http://www.lryc.cn/news/468827.html

相关文章:

  • vue图片加载失败的图片
  • 终止,半成收入来自海外,收入可持续性被质疑
  • 日常记录,使用springboot,vue2,easyexcel使实现字段的匹配导入
  • Unable to open nested entry ‘********.jar‘ 问题解决
  • 反编译华为-研究功耗联网监控日志
  • 线程池——Java
  • java 17天 TreeSet以及Collections
  • JavaScript 第27章:构建工具与自动化
  • Android原生ROM出现WIFI显示网络连接受限,网络无法连接的问题
  • 如何实现网页上的闪烁效果
  • 事件总线—Event Bus 使用及讲解
  • 信息安全工程师(67)网络流量清洗技术与应用
  • 【项目】论坛系统测试
  • XJ02、消费金融|消费金融业务模式中的主要主体
  • 基于神经网络的农业病虫害损失预测
  • 【DSP】TI 微控制器和处理器的IDE安装CCSTUDIO
  • Web应用框架-Django应用基础
  • qt QMainWindow详解
  • 第二单元历年真题整理
  • Ubuntu下载protobuf
  • 【算法优化】混合策略改进的蝴蝶优化算法
  • 什么是标准差?详解
  • C++20中头文件syncstream的使用
  • 判断特定时间点开仓的函数(编程技巧)
  • 如何新建一个React Native的项目
  • 学习--图像信噪比
  • 【2024CANN训练营第二季】使用华为云体验AscendC_Sample仓算子运行
  • 使用 NumPy 和 Matplotlib 实现交互式数据可视化
  • TCP 攻击为何在 DDoS 攻击中如此常见
  • 未来汽车驾驶还会有趣吗?车辆动力学系统简史