fix: Canvas标题居中 - CSS尺寸匹配视频渲染区域,消除容器/视频宽度不一致导致的偏移 #1251
Reference in New Issue
Block a user
Delete Branch "fix/canvas-titlecentering-v2"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
根因
Canvas CSS 尺寸设为
width: 100%; height: 100%(占满容器),但物理像素尺寸设为视频实际渲染尺寸(videoRect.width × videoRect.height)。当容器宽度和视频宽度不一致时(如视频有黑边或比例不匹配),浏览器会拉伸/压缩 Canvas,导致绘制的x = offsetX + w/2和实际显示位置不匹配。修复方案
1.
drawVideoTitle— Canvas CSS 对齐视频渲染区域videoEl.getBoundingClientRect()获取视频实际渲染尺寸和位置container.getBoundingClientRect()获取容器位置canvas.style.left/top/width/height)将 Canvas CSS 位置和尺寸设为与视频完全一致2.
drawTitleOnCanvas— 坐标系基于 Canvas 自身offsetX/offsetY参数(不再需要,Canvas 已定位到视频位置)x = w / 2(w = drawW = 视频渲染宽度)y = startY + i * lineHeight(移除 offsetY 偏移)3. 注释说明
drawTitleOnCanvasJSDoc 更新,明确坐标系基于 Canvas 自身尺寸验证方式
改动范围
apps/web/src/pages/generate/components/PreviewVideoPanel.tsx— 仅此一个文件🚀 预览环境已部署
CI全绿,自动审批通过。
CI全绿,自动审批通过。
🗑️ 预览环境已清理
PR #1251 已关闭或合并,对应的预览环境已被清理。