fix: v2.12 全部 2D 画布上下颠倒修复(组合/编辑/效果图/AI变体)
- 根因: 四画布 ty 按 y 向上渲染, 而模型坐标 y 向下(v2.11 实证) → 样板内部布局颠倒 - 统一去翻转: ty 直接映射 + toModel 反演同步 + 顶底序归位 - WindoorCanvas: 尺寸手柄(右下角)/中梃竖向拖动 dy 符号/扇符号与标注位置同步修正 - 验证: 组合页 2D 与 3D 方向一致, 设计图纸 704 布局=官方平面图, ui-shots 6 页无报错
This commit is contained in:
@@ -54,7 +54,7 @@ let guides: { v: number[]; h: number[] } = { v: [], h: [] }
|
||||
|
||||
function toModel(sx: number, sy: number): Pt {
|
||||
const { scale, midX, midY, W, H } = lastT
|
||||
return { x: (sx - W / 2 - view.cx) / scale + midX, y: (H / 2 + view.cy - sy) / scale + midY }
|
||||
return { x: (sx - W / 2 - view.cx) / scale + midX, y: (sy - H / 2 - view.cy) / scale + midY }
|
||||
}
|
||||
|
||||
// ---------- 几何 ----------
|
||||
@@ -202,7 +202,8 @@ function render() {
|
||||
const midX = (gb.x0 + gb.x1) / 2, midY = (gb.y0 + gb.y1) / 2
|
||||
lastT = { scale, midX, midY, W, H }
|
||||
const tx = (x: number) => W / 2 + (x - midX) * scale + view.cx
|
||||
const ty = (y: number) => H / 2 - (y - midY) * scale + view.cy
|
||||
// 模型坐标 y 向下(屏幕系): 直接映射, 不做上下翻转
|
||||
const ty = (y: number) => H / 2 + (y - midY) * scale + view.cy
|
||||
|
||||
ctx.lineJoin = 'round'
|
||||
for (const shape of props.shapes) {
|
||||
@@ -225,7 +226,7 @@ function render() {
|
||||
const bb = bboxOf(rs.flat())
|
||||
ctx.strokeStyle = sel ? '#409eff' : '#5c6166'
|
||||
ctx.lineWidth = 3
|
||||
ctx.strokeRect(tx(bb.x0), ty(bb.y1), (bb.x1 - bb.x0) * scale, (bb.y1 - bb.y0) * scale)
|
||||
ctx.strokeRect(tx(bb.x0), ty(bb.y0), (bb.x1 - bb.x0) * scale, (bb.y1 - bb.y0) * scale)
|
||||
}
|
||||
// 中梃(按重放区域裁剪近似:画在其基底 bbox 内)
|
||||
const rb = rs.length ? bboxOf(rs.flat()) : null
|
||||
@@ -254,7 +255,7 @@ function render() {
|
||||
if (selectedUid.value !== null) {
|
||||
const bb = unitBBox(selectedUid.value)
|
||||
if (bb) {
|
||||
const x0 = tx(bb.x0), x1 = tx(bb.x1), y0 = ty(bb.y1), y1 = ty(bb.y0)
|
||||
const x0 = tx(bb.x0), x1 = tx(bb.x1), y0 = ty(bb.y0), y1 = ty(bb.y1)
|
||||
ctx.strokeStyle = '#409eff'
|
||||
ctx.setLineDash([6, 4])
|
||||
ctx.lineWidth = 1.5
|
||||
|
||||
Reference in New Issue
Block a user