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

fabricjs 整合 vue3-sketch-ruler 实现标尺功能

版本信息

fabricjs版本为6.7.1 ------  vue3-sketch-ruler的版本为1.3.15
引入标尺的部分代码
<!-- 画布区域 -->
  <div id="workspace" style="width: 100%;height: 100%; position: relative; background: #f1f1f1"><Ruler :editor="editor" :event="event"></Ruler><canvas id="canvas" :class="state.ruler ? 'design-stage-grid' : ''"></canvas><Dom v-if="state.show"></Dom><ClickMenu v-if="state.show"></ClickMenu></div>

  vue3-sketch-ruler标尺封装代码

<template><SketchRule :thick="ruleOption.thick" :scale="ruleOption.scale" :width="ruleOption.width":height="ruleOption.height" :shadow="ruleOption.shadow" :autoCenter="ruleOption.autoCenter":start-x="ruleOption.startX" :start-y="ruleOption.startY" :palette="ruleOption.palette":isShowReferLine="ruleOption.isShowReferLine" :lines="ruleOption.lines"><slot></slot></SketchRule>
</template><script lang="ts" setup>
import { ref, nextTick } from 'vue'
import SketchRule from 'vue3-sketch-ruler'
import 'vue3-sketch-ruler/lib/style.css'
import { ZoomEvent } from '@/enums/editorEnum';
import CanvasEventEmitter from '@/core/CanvasEventEmitter';
import Editor from '@/core';const props = defineProps<{event: CanvasEventEmitter,editor: Editor | undefined
}>()const ruleOption = ref({scale: 1, //初始化标尺的缩放 通过设置值,改变刻度尺的大小autoCenter: false, //缩放时是否自动居中对齐startX: 0, //水平标尺的起始刻度startY: 0, //垂直标尺的起始刻度    lines: { h: [], v: [], }, //不能直接写{}不然删除有问题
    shadow: {x: 0,y: 0,width: 0,height: 0,},width: 0,height: 0,ratio: 1,thick: 16, //标尺的厚度 isShowRuler: true,isShowReferLine: true,palette: {bgColor: '#FFF', // 画布背景longfgColor: '#BABBBC', // 长刻度颜色shortfgColor: '#C8CDD0',fontColor: '#333', // 刻度文字颜色shadowColor: '#ccc', // 参考线颜色lineColor: '#33aaff',borderColor: '#DADADC',cornerActiveColor: 'rgba(255,255,255, 0)',lineType: 'solid'       // 参考线类型(solid/dashed/dotted)
    },
})const initRuler = () => {
   //标尺的边框 pxconst borderWidth
= 1
   //画布元素const workspaceEl = document.querySelector('#workspace') as HTMLElement;ruleOption.value.width = workspaceEl.offsetWidth - ruleOption.value.thick - borderWidthruleOption.value.height = workspaceEl.offsetHeight - ruleOption.value.thick - borderWidth} //画布缩放标尺进行缩放 const handleEditorZoom = () => {const transform = props.editor!.canvas.viewportTransformruleOption.value.scale = transform[0]
   //减去标尺16px 缩放后的宽度ruleOption.value.startX
= -(transform[4] / transform[0] - 16 / transform[0])ruleOption.value.startY = -(transform[5] / transform[3] - 16 / transform[0])props.editor!.updateDomComponents();console.log(transform) }nextTick(() => {props.event.on(ZoomEvent.ZOOMING, handleEditorZoom);initRuler(); })</script>

 

http://www.gsyq.cn/news/47748.html

相关文章:

  • 2025年真空耙式干燥机定做厂家权威推荐榜单:真空单锥螺带干燥机/沸腾床干燥机/闪蒸干燥机源头厂家精选
  • 基础查找算法(三)二分查找
  • 2025年济南统招专升本学校权威推荐榜单:专升本机构报名/全日制专升本/专升本考试培训学校精选
  • (3)Bug篇 - 详解
  • 西林瓶灌装轧盖机:黔东南折旧年限与成本解析
  • 高精度除法模板(p1480)
  • 焊接工业机器人节气装置
  • 枣庄西林瓶灌装轧盖机:SIP灭菌快,自动冷却高效
  • 已完成今日基础缩索大学习
  • 配置ElactisSearch跨域
  • 西林瓶粉末灌装机:塔城培训服务免费提供
  • 一份用pyhon生成word/wps文档的代码2
  • 2025-11-12 aoao Round2 赛后总结
  • 南大-操作系统-绿导师原谅你了
  • 深入解析:EI会议预订又又+1
  • QCombox判断是否包含某项
  • 基于Newmark-β法的单自由度体系地震响应MATLAB实现
  • 物理光学中光束传输与变换的数值模拟研究
  • 精度、正确率、召回率的简单理解
  • 西林瓶粉末灌装机:舟山备件更换快,紧急可加急发货
  • PG预写式日志解码的艺术与应用
  • 多智能体设计模式和智能体框架,你会了么?
  • CF710F String Set Queries
  • 神经网络中激活函数的作用
  • 【原理到实战】实验异质性分析
  • 最近学习到的一些基础知识
  • 基于LMS与RLS的自适应回声消除滤波
  • 2025年气密门窗实力厂家权威推荐榜单:折叠门窗/折叠门窗/断桥铝门窗源头厂家精选
  • 2025 年 11 月建筑木方厂家推荐排行榜,建筑木方/模板木方/桥梁木方/樟松工地木方/防腐建筑木方/烘干建筑木方/松木木方/辐射松木方/铁杉木方公司推荐
  • 2025 年 11 月防腐木厂家推荐排行榜,碳化防腐木/花旗防腐木/南方松防腐木/辐射松防腐木/菠萝格防腐木,室内装修与建筑防腐木公司推荐