diff --git a/src/main/java/dev/bytevibe/hyperpoint/DrawingCanvas.java b/src/main/java/dev/bytevibe/hyperpoint/DrawingCanvas.java index 912fcf3..06fc0ce 100644 --- a/src/main/java/dev/bytevibe/hyperpoint/DrawingCanvas.java +++ b/src/main/java/dev/bytevibe/hyperpoint/DrawingCanvas.java @@ -14,6 +14,10 @@ import javafx.scene.text.FontWeight; * 绘图Canvas组件,用于渲染和交互所有可绘制对象 */ public class DrawingCanvas extends Pane { + // 页面标准尺寸(与全屏播放保持一致) + public static final double PAGE_WIDTH = 1024; + public static final double PAGE_HEIGHT = 768; + // 缩放点的枚举 enum ResizePoint { TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT, NONE @@ -32,7 +36,7 @@ public class DrawingCanvas extends Pane { public DrawingCanvas(PageContent pageContent) { this.pageContent = pageContent; - this.canvas = new Canvas(); + this.canvas = new Canvas(PAGE_WIDTH, PAGE_HEIGHT); getChildren().add(canvas); @@ -41,18 +45,11 @@ public class DrawingCanvas extends Pane { setOnMouseDragged(this::handleMouseDragged); setOnMouseReleased(this::handleMouseReleased); - setStyle("-fx-border-color: #e0e0e0; -fx-border-width: 1;"); - // 绑定Canvas大小到Pane大小 - widthProperty().addListener((obs, oldVal, newVal) -> { - canvas.setWidth(newVal.doubleValue()); - redraw(); - }); - heightProperty().addListener((obs, oldVal, newVal) -> { - canvas.setHeight(newVal.doubleValue()); - redraw(); - }); + // 设置Pane的首选大小为页面尺寸,这样编辑界面显示时会按页面比例显示 + setPrefWidth(PAGE_WIDTH); + setPrefHeight(PAGE_HEIGHT); // 初始绘制 redraw(); diff --git a/src/main/java/dev/bytevibe/hyperpoint/PresentationWindow.java b/src/main/java/dev/bytevibe/hyperpoint/PresentationWindow.java index cc782a4..88e0430 100644 --- a/src/main/java/dev/bytevibe/hyperpoint/PresentationWindow.java +++ b/src/main/java/dev/bytevibe/hyperpoint/PresentationWindow.java @@ -38,10 +38,9 @@ public class PresentationWindow { } private void initializeStage() { - // 页面标准宽高比 (4:3) - final double PAGE_WIDTH = 1024; - final double PAGE_HEIGHT = 768; - final double ASPECT_RATIO = PAGE_WIDTH / PAGE_HEIGHT; // 4:3 = 1.333... + // 页面标准宽高比 (4:3) - 使用与编辑界面相同的尺寸 + final double PAGE_WIDTH = DrawingCanvas.PAGE_WIDTH; // 1024 + final double PAGE_HEIGHT = DrawingCanvas.PAGE_HEIGHT; // 768 // 设置全屏,获取屏幕分辨率 stage.setFullScreen(true); @@ -209,8 +208,8 @@ public class PresentationWindow { double canvasWidth = canvas.getWidth(); double canvasHeight = canvas.getHeight(); - final double PAGE_WIDTH = 1024; - final double PAGE_HEIGHT = 768; + final double PAGE_WIDTH = DrawingCanvas.PAGE_WIDTH; + final double PAGE_HEIGHT = DrawingCanvas.PAGE_HEIGHT; double scaleX = canvasWidth / PAGE_WIDTH; double scaleY = canvasHeight / PAGE_HEIGHT; @@ -287,8 +286,8 @@ public class PresentationWindow { double canvasWidth = canvas.getWidth(); double canvasHeight = canvas.getHeight(); - final double PAGE_WIDTH = 1024; - final double PAGE_HEIGHT = 768; + final double PAGE_WIDTH = DrawingCanvas.PAGE_WIDTH; + final double PAGE_HEIGHT = DrawingCanvas.PAGE_HEIGHT; double scaleX = canvasWidth / PAGE_WIDTH; double scaleY = canvasHeight / PAGE_HEIGHT; @@ -377,8 +376,8 @@ public class PresentationWindow { double canvasWidth = canvas.getWidth(); double canvasHeight = canvas.getHeight(); - final double PAGE_WIDTH = 1024; - final double PAGE_HEIGHT = 768; + final double PAGE_WIDTH = DrawingCanvas.PAGE_WIDTH; + final double PAGE_HEIGHT = DrawingCanvas.PAGE_HEIGHT; double scaleX = canvasWidth / PAGE_WIDTH; double scaleY = canvasHeight / PAGE_HEIGHT; @@ -473,8 +472,8 @@ public class PresentationWindow { double canvasWidth = canvas.getWidth(); double canvasHeight = canvas.getHeight(); - final double PAGE_WIDTH = 1024; - final double PAGE_HEIGHT = 768; + final double PAGE_WIDTH = DrawingCanvas.PAGE_WIDTH; + final double PAGE_HEIGHT = DrawingCanvas.PAGE_HEIGHT; double scaleX = canvasWidth / PAGE_WIDTH; double scaleY = canvasHeight / PAGE_HEIGHT; @@ -525,8 +524,8 @@ public class PresentationWindow { double canvasHeight = canvas.getHeight(); // 页面标准宽高比 - final double PAGE_WIDTH = 1024; - final double PAGE_HEIGHT = 768; + final double PAGE_WIDTH = DrawingCanvas.PAGE_WIDTH; + final double PAGE_HEIGHT = DrawingCanvas.PAGE_HEIGHT; // 计算缩放因子,保持宽高比 double scaleX = canvasWidth / PAGE_WIDTH;