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

news/2025/11/12 17:41:40/文章来源:https://www.cnblogs.com/ctrlc-ctrlv/p/19214881

版本信息

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.mzph.cn/news/963647.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年真空耙式干燥机定做厂家权威推荐榜单:真空单锥螺带干燥机/沸腾床干燥机/闪蒸干燥机源头厂家精选

在精细化工与制药行业对热敏性物料干燥要求日益严格的背景下,一台高性能的真空耙式干燥机已成为保障产品质量、提升生产效率的关键装备。 据干燥设备行业数据显示,2024年中国真空干燥设备市场规模达到87亿元,年增长…

基础查找算法(三)二分查找

基础查找算法(三)二分查找一 定义 二分查找(Binary Search)是一种基于分治策略的高效查找算法,专用于有序数据集合。它通过不断将搜索范围减半来快速定位目标元素,具有对数时间复杂度,适合处理大规模静态数据。…

2025年软像套电缆订做厂家权威推荐榜单:补偿电缆/矿物质电缆/电力电缆源头厂家精选

在工业自动化与智能制造浪潮中,一根高品质的软像套电缆不仅是电力与信号的传输载体,更是保障设备稳定运行的关键。 据行业数据显示,全球工业电缆市场规模预计到2031年将达到千亿级别,年复合增长率稳定提升。软像套…

2025年济南统招专升本学校权威推荐榜单:专升本机构报名/全日制专升本/专升本考试培训学校精选

在山东省专升本录取率持续走低的背景下,选择一家优质的统招专升本培训机构已成为考生成功升本的关键因素。 根据山东省教育招生考试院公布的数据,2024年山东专升本报考人数已突破17万,而总招生计划仅为7.6万人左右,…

一些水题

https://www.luogu.com.cn/problem/CF374B点击查看代码 #include <bits/stdc++.h> using namespace std;/*CF374B - Inna and Nine思路:- 找到字符串中所有 maximal 的“相邻两位和为9”的连续段(段内任意相邻…

(3)Bug篇 - 详解

(3)Bug篇 - 详解2025-11-12 17:29 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-fam…

西林瓶灌装轧盖机:黔东南折旧年限与成本解析

在黔东南地区,随着生物医药、民族医药及大健康产业的快速发展,对西林瓶灌装设备的需求持续增长。无论是本地药企扩产,还是新兴诊断试剂企业建线,西林瓶灌装轧盖机作为核心装备之一,其采购决策不仅关乎生产效率,更…

list对象 集合 和 String 互转

list<对象> 集合 和 String 互转maven 项目 首先导入alibaba的jar包<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.54</v…

碎碎念(二四)

awa跃龙门 鲤鱼跃龙门,长久以来津津乐道的话题。 指鲤鱼回游逆流而上时成功跃过激流,化龙的故事。 之前我认为它指春节时热闹喜庆(毕竟春节都是锦鲤和金龙),或者进士中举时用来庆祝。 大家都在对跃龙门的鲤鱼表示…

西林瓶灌装加塞机:驻马店适用,低噪运行约65分贝

在制药与生物制剂行业中,西林瓶灌装设备的运行稳定性、精度以及环境友好性始终是用户关注的核心指标。其中,噪音水平作为衡量设备运行品质的重要参数之一,直接影响操作人员的工作舒适度及车间整体声学环境。根据行业…

高精度除法模板(p1480)

P1480 A/B Problem 题目描述 输入两个整数 \(a,b\),输出它们的商。 输入格式 两行,第一行是被除数,第二行是除数。 输出格式 一行,商的整数部分。 输入输出样例 #1 输入 #1 10 2输出 #1 5说明/提示 \(0\le a\le 10…

如何完成一个简单的rust WebAssembly调用

1、安装wasm编译目标 rustup target add wasm32-unknown-unknownwasm32-unknown-unknown 是 WebAssembly (Wasm) 的一个编译目标,表示一个独立于特定环境(如浏览器或Node.js)的 32 位 WebAssembly 二进制文件。它是…

焊接工业机器人节气装置

在现代制造业如飞驰列车般迅猛发展的当下,机器人焊接技术俨然成为提升生产效率、铸就高品质产品的中流砥柱。但在这看似一切顺遂的背后,焊接过程中保护气体的消耗问题,却似一座横亘于制造成本之途的大山,令人颇为挠…

详细介绍:考研408--组成原理--day1

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

深入解析:海尔 Haier Master 智能家居网关安装 Home Assistant 实践指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

枣庄西林瓶灌装轧盖机:SIP灭菌快,自动冷却高效

在枣庄地区,随着制药与生物制剂产业的持续升级,对西林瓶灌装设备的技术要求日益精细化。尤其在涉及无菌保障的关键环节——SIP(在线灭菌)流程中,用户普遍关注两个核心问题:一是整个灭菌周期需要多长时间;二是灭…

【Nano Banana超详细教程】AI绘图神器Gemini 2.5实测:一键生成神图!

【Nano Banana超详细教程】AI绘图神器Gemini 2.5实测:一键生成神图!Nano Banana,大香蕉模型小名“纳米香蕉”是 Google/DeepMind 推出的图像生成/编辑子模型(Gemini 2.5 Flash Image 系列的俗称),以强大的一步/迭…

已完成今日基础缩索大学习

搜索,指通过对状态进行枚举,来计算最优解或统计解的个数。 一般的题目很少有纯粹搜索,但它是很多算法的基础,并且在考场上考虑拿暴力分时,它应该是最好的选择了。 dfs 深度优先搜索(dfs),指通过递归的方式,将…

配置ElactisSearch跨域

配置ElactisSearch跨域,从而使head能够成功connect上ElactisSearch。 1.先在yml配置文件中,将安全配置总开关关闭: xpack.security.enabled: false当xpack.security.enabled: false,则 xpack.security.enrollment.…

西林瓶粉末灌装机:塔城培训服务免费提供

在当前制药与生物制剂设备采购市场中,用户对西林瓶灌装设备的选购已从单纯关注价格,逐步转向对技术适配性、售后服务体系及培训支持能力的综合评估。据2024年行业调研数据显示,超过68%的采购决策者将“是否提供系统…