vue konva 放大的layer恢复原始大小
时间: 2023-07-09 22:36:31 浏览: 215
在 Vue.js 和 Konva 中,可以通过监听鼠标事件来实现 Layer 的缩放和恢复原始大小的功能。具体来说,可以通过监听鼠标的双击事件来实现 Layer 的还原,代码示例如下:
```html
<template>
<div ref="container">
<v-stage :config="stageConfig" @wheel="handleWheel">
<v-layer :config="layerConfig" ref="layer">
<v-rect :config="rectConfig" />
</v-layer>
</v-stage>
</div>
</template>
<script>
import { Stage, Layer, Rect } from "vue-konva";
export default {
components: {
Stage,
Layer,
Rect,
},
data() {
return {
stageConfig: {
width: 500,
height: 500,
},
layerConfig: {
x: 0,
y: 0,
scaleX: 1,
scaleY: 1,
},
rectConfig: {
x: 0,
y: 0,
width: 200,
height: 200,
fill: "red",
},
originalScale: {
scaleX: 1, // 原始 X 缩放比例
scaleY: 1, // 原始 Y 缩放比例
},
};
},
methods: {
resetLayer() {
// 恢复原始大小
this.$refs.layer.scaleX(this.originalScale.scaleX);
this.$refs.layer.scaleY(this.originalScale.scaleY);
},
handleWheel(e) {
// 放大或缩小
const delta = e.evt.deltaY;
const factor = delta > 0 ? 0.9 : 1.1;
this.$refs.layer.scaleX(this.$refs.layer.scaleX() * factor);
this.$refs.layer.scaleY(this.$refs.layer.scaleY() * factor);
},
},
mounted() {
// 记录原始缩放比例
this.originalScale.scaleX = this.$refs.layer.scaleX();
this.originalScale.scaleY = this.$refs.layer.scaleY();
},
};
</script>
```
在上述代码中,`layerConfig` 对象中的 `scaleX` 和 `scaleY` 属性表示当前 Layer 的 X 和 Y 缩放比例,`originalScale` 对象中的 `scaleX` 和 `scaleY` 属性表示 Layer 的原始 X 和 Y 缩放比例。在双击事件处理函数 `resetLayer` 中,将 Layer 的 X 和 Y 缩放比例还原为原始尺寸即可。如果需要实现缩放功能,可以在鼠标事件处理函数 `handleWheel` 中根据鼠标的滚动方向来动态调整 Layer 的缩放比例。
阅读全文