+
+
+
+
(null)
@reply="session.replyMessageBox(box.requestId, $event)"
/>
点击"运行"后,学生程序的窗体会显示在这里
+
+
+ 缩放 {{ Math.round(scale * 100) }}%
+
+
+
@@ -91,10 +140,72 @@ const viewing = ref<{ path: string; url: string } | null>(null)
min-height: 320px;
background: #2d6aa3;
border-radius: 4px;
- /* 窗体比桌面区域大时可以滚动查看 */
+ /* 窗体被拖到桌面外面时可以滚动查看 */
overflow: auto;
}
+.desktop-canvas {
+ position: absolute;
+ inset: 0 auto auto 0;
+ width: 100%;
+ height: 100%;
+ transform-origin: 0 0;
+}
+
+.desktop-tools {
+ position: absolute;
+ top: 6px;
+ right: 6px;
+ z-index: 100001;
+ display: flex;
+ align-items: center;
+ gap: 6px;
+ font-size: 12px;
+}
+
+.desktop-scale {
+ padding: 2px 6px;
+ border-radius: 3px;
+ background: rgb(0 0 0 / 0.35);
+ color: #fff;
+}
+
+.desktop-tools button {
+ padding: 2px 10px;
+ border: 1px solid rgb(255 255 255 / 0.6);
+ border-radius: 3px;
+ background: rgb(0 0 0 / 0.35);
+ color: #fff;
+ font-size: 12px;
+ cursor: pointer;
+}
+
+.desktop-tools button:hover {
+ background: rgb(0 0 0 / 0.55);
+}
+
+/* 放大:桌面在左边占满高度,实训台、图片列表和输出在右边一栏 */
+.run-area.maximized {
+ position: fixed;
+ inset: 0;
+ z-index: 900;
+ display: grid;
+ grid-template-columns: minmax(0, 1fr) 460px;
+ grid-auto-rows: min-content;
+ align-content: start;
+ background: #f3f4f6;
+}
+
+.run-area.maximized .desktop {
+ grid-column: 1;
+ grid-row: 1 / span 20;
+ height: calc(100vh - 16px);
+}
+
+.run-area.maximized > :not(.desktop) {
+ grid-column: 2;
+}
+
.desktop-hint {
position: absolute;
inset: 0;
diff --git a/web/src/winforms/ControlView.vue b/web/src/winforms/ControlView.vue
index 5ad25d6..480916c 100644
--- a/web/src/winforms/ControlView.vue
+++ b/web/src/winforms/ControlView.vue
@@ -1,10 +1,10 @@