feat: thumbnail grid, aspect-aware templates, and UI hierarchy polish
Material list: - Switch asset list from one-per-row to a wrapping thumbnail grid (IconMode cards: thumbnail + corner checkbox + elided name, subfolder moved to tooltip). Templates: - Template.to_transform_state now contains-fits the print inside the target box by the print's native aspect ratio (no stretch); falls back to the box when print size is unknown. - Feed print native size into template_panel for aspect-aware fitting. - Shrink built-in template boxes to realistic print proportions. UI hierarchy: - Promote 打开文件夹 buttons to primary (filled accent). - Add inline 归零 (reset angle) and a 重置位置/尺寸/角度 button to the transform panel; wire it to re-apply the selected template. - Hide 保存 for built-in templates instead of leaving it greyed. Docs: record template box/contain behavior (PRD) and the grid layout, button hierarchy, and reset/save-visibility rules (UI design). Tests: add 3 aspect-fit cases for to_transform_state. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+9
-5
@@ -67,19 +67,21 @@
|
||||
|
||||
模板是一组可复用的合成参数。
|
||||
|
||||
模板字段:
|
||||
模板使用**比例坐标**存储,以适配任意尺寸的衣服底图(字段为相对衣服宽高的比例 `x_ratio` / `y_ratio` / `width_ratio` / `height_ratio` 及 `rotation`),应用时再换算为像素:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "左胸小号模板",
|
||||
"x": 120,
|
||||
"y": 180,
|
||||
"width": 160,
|
||||
"height": 160,
|
||||
"x_ratio": 0.50,
|
||||
"y_ratio": 0.22,
|
||||
"width_ratio": 0.16,
|
||||
"height_ratio": 0.16,
|
||||
"rotation": 0
|
||||
}
|
||||
```
|
||||
|
||||
其中 `width_ratio` / `height_ratio` 表示目标框,而非印花最终尺寸;印花在框内按原始宽高比 contain 适配(详见 6.6)。
|
||||
|
||||
## 6. 功能需求
|
||||
|
||||
### 6.1 图片加载
|
||||
@@ -159,6 +161,8 @@
|
||||
|
||||
- 用户点击模板后,印花位置、尺寸、旋转参数立即应用到当前预览。
|
||||
- 模板参数应基于衣服底图尺寸计算,避免只适配单一图片分辨率。
|
||||
- 模板的 `width_ratio` / `height_ratio` 定义衣服上的**目标框**,而非强制拉伸尺寸。已知印花原始尺寸时,印花按自身宽高比缩放后 contain 进目标框并居中,不被拉伸变形;未知印花尺寸时退化为铺满目标框。
|
||||
- 内置模板尺寸以贴近真实印花占比为准(例如正方形模板约为衣服宽度的 1/3),避免印花占据过大面积。
|
||||
|
||||
### 6.7 自定义模板
|
||||
|
||||
|
||||
+20
-7
@@ -89,20 +89,22 @@
|
||||
|
||||
控件:
|
||||
|
||||
- `打开衣服文件夹` 按钮。
|
||||
- `打开衣服文件夹` 按钮,作为该区域的主操作,使用主色填充按钮(见第 10 节按钮层级)。
|
||||
- 图片数量说明,例如:`含子文件夹 · 共 12`。
|
||||
- 全选复选框。
|
||||
- 已选数量。
|
||||
- 排序选择,例如:`文件夹+名称`。
|
||||
- 缩略图网格。
|
||||
|
||||
缩略图项显示:
|
||||
缩略图网格采用**每行多张、随面板宽度自动换行**的卡片布局(非每行一张的列表)。
|
||||
|
||||
- 图片预览。
|
||||
- 勾选框。
|
||||
- 来源子文件夹标签。
|
||||
- 文件名。
|
||||
- 当前预览选中态。
|
||||
缩略图卡片显示:
|
||||
|
||||
- 图片预览(卡片上方)。
|
||||
- 勾选框(叠加在缩略图左上角)。
|
||||
- 文件名(卡片下方,过长时中间省略)。
|
||||
- 来源子文件夹(鼠标悬停 tooltip 显示,节省网格空间)。
|
||||
- 当前预览选中态(卡片高亮)。
|
||||
|
||||
交互规则:
|
||||
|
||||
@@ -206,6 +208,7 @@ Shift 锁比例
|
||||
- 选择模板后更新当前印花位置、尺寸和旋转。
|
||||
- 保存用于覆盖当前自定义模板。
|
||||
- 另存为用于创建新模板。
|
||||
- `保存` 仅对自定义模板有意义:选中内置模板时**隐藏**该按钮(而非禁用置灰),避免出现长期灰显且无法说明原因的控件。
|
||||
|
||||
### 7.2 位置区域
|
||||
|
||||
@@ -240,6 +243,7 @@ Shift 锁比例
|
||||
控件:
|
||||
|
||||
- `角度` 数字输入框。
|
||||
- `归零` 按钮(紧邻角度输入框,一键将角度还原为 0,即拉直印花)。
|
||||
- `左旋 90°` 按钮。
|
||||
- `右旋 90°` 按钮。
|
||||
|
||||
@@ -249,6 +253,7 @@ Shift 锁比例
|
||||
- 支持负角度。
|
||||
- 顶部旋转控制点拖动后同步角度输入框。
|
||||
- 按钮旋转后同步预览和角度输入框。
|
||||
- 参数栏底部提供 `重置位置 / 尺寸 / 角度` 按钮,将三者一并还原为当前所选模板(与导出区的 `重置为模板` 等效,就近放在参数编辑处)。
|
||||
|
||||
### 7.5 输出设置区域
|
||||
|
||||
@@ -439,6 +444,14 @@ Microsoft YaHei
|
||||
- 控件圆角保持小半径,约 3 px。
|
||||
- 不使用大圆角卡片。
|
||||
|
||||
按钮层级(一套主色,按角色克制使用):
|
||||
|
||||
- **主按钮**:主色填充、白字。用于每个区域「推动流程前进」的唯一动作:左侧 `打开文件夹`、右侧 `导出当前单张`、底部 `开始批量导出`。三者分处不同区域,各自是本区域主操作,不互相竞争。
|
||||
- **次按钮**:白底、主色描边与文字。用于有意义但非主线的动作,如 `重置位置 / 尺寸 / 角度`、`应用为模板`。
|
||||
- **辅助按钮**:浅灰底、细边框。用于就地微调类动作,如 `浏览…`、排序、`左旋 / 右旋 / 归零`。
|
||||
|
||||
避免所有按钮使用同一种灰色样式而丧失层级;同一动作在不同位置应使用一致的文案与层级。
|
||||
|
||||
## 11. PySide6 控件映射
|
||||
|
||||
建议映射:
|
||||
|
||||
Reference in New Issue
Block a user