diff --git a/src/store/main.ts b/src/store/main.ts
index 6a2af761..97cb9f68 100644
--- a/src/store/main.ts
+++ b/src/store/main.ts
@@ -18,6 +18,7 @@ export interface MainState {
editorAreaFocus: boolean;
disableHotkeys: boolean;
showGridLines: boolean;
+ showRuler: boolean;
creatingElement: CreatingElement | null;
availableFonts: typeof SYS_FONTS;
toolbarState: ToolbarStates;
@@ -41,6 +42,7 @@ export const useMainStore = defineStore('main', {
editorAreaFocus: false, // 编辑区域聚焦
disableHotkeys: false, // 禁用快捷键
showGridLines: false, // 显示网格线
+ showRuler: false, // 显示标尺
creatingElement: null, // 正在插入的元素信息,需要通过绘制插入的元素(文字、形状、线条)
availableFonts: SYS_FONTS, // 当前环境可用字体
toolbarState: ToolbarStates.SLIDE_DESIGN, // 右侧工具栏状态
@@ -112,6 +114,10 @@ export const useMainStore = defineStore('main', {
this.showGridLines = show
},
+ setRulerState(show: boolean) {
+ this.showRuler = show
+ },
+
setCreatingElement(element: CreatingElement | null) {
this.creatingElement = element
},
diff --git a/src/views/Editor/Canvas/Ruler.vue b/src/views/Editor/Canvas/Ruler.vue
new file mode 100644
index 00000000..9231ed7f
--- /dev/null
+++ b/src/views/Editor/Canvas/Ruler.vue
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/Editor/Canvas/index.vue b/src/views/Editor/Canvas/index.vue
index 414ec25f..87581681 100644
--- a/src/views/Editor/Canvas/index.vue
+++ b/src/views/Editor/Canvas/index.vue
@@ -76,6 +76,8 @@
+
+
{
+ mainStore.setRulerState(!showRuler.value)
+ }
+
// 在鼠标绘制的范围插入元素
const { insertElementFromCreateSelection } = useInsertFromCreateSelection(viewportRef)
@@ -248,6 +258,11 @@ export default defineComponent({
subText: showGridLines.value ? '√' : '',
handler: toggleGridLines,
},
+ {
+ text: '标尺',
+ subText: showRuler.value ? '√' : '',
+ handler: toggleRuler,
+ },
{
text: '重置当前页',
handler: deleteAllElements,
@@ -279,6 +294,7 @@ export default defineComponent({
alignmentLines,
linkDialogVisible,
spaceKeyState,
+ showRuler,
openLinkDialog,
handleClickBlankArea,
removeEditorAreaFocus,
diff --git a/src/views/Editor/EditorHeader/index.vue b/src/views/Editor/EditorHeader/index.vue
index 607c8f00..8def142d 100644
--- a/src/views/Editor/EditorHeader/index.vue
+++ b/src/views/Editor/EditorHeader/index.vue
@@ -20,6 +20,7 @@
+
@@ -99,7 +100,7 @@ export default defineComponent({
},
setup() {
const mainStore = useMainStore()
- const { showGridLines } = storeToRefs(mainStore)
+ const { showGridLines, showRuler } = storeToRefs(mainStore)
const { enterScreening, enterScreeningFromStart } = useScreening()
const { createSlide, deleteSlide, resetSlides } = useSlideHandler()
@@ -110,6 +111,10 @@ export default defineComponent({
mainStore.setGridLinesState(!showGridLines.value)
}
+ const toggleRuler = () => {
+ mainStore.setRulerState(!showRuler.value)
+ }
+
const hotkeyDrawerVisible = ref(false)
const exportImgDialogVisible = ref(false)
@@ -129,6 +134,7 @@ export default defineComponent({
createSlide,
deleteSlide,
toggleGridLines,
+ toggleRuler,
resetSlides,
exportJSON,
exportPPTX,