Skip to content

Releases: PivKeyU/PivKeyUBox

v0.1.1 · 界面清晰度优化

Choose a tag to compare

v0.1.1 · 界面清晰度优化

本次更新聚焦收纳栏的显示清晰度,修复三项优先问题。

界面缩放真正生效(80% – 130%)

此前设置页的「界面缩放」对桌面收纳栏完全无效,根因有两处:

  1. 同步协议缺字段 —— PanelSyncData 没有 uiScale;
  2. 真实生产端漏赋值 —— 面板负载由原生 Manager.BuildPanels() 构造,而它从不设置 panel.uiScale,消费端永远收到 0 并被兜底成 100。

现已补齐:PanelSyncData.uiScale 字段、BuildPanels() 赋值、BuildPanelKey() 签名项、前端 payload 与 buildPanelSyncKey,以及 usePanelSync 的 effect 依赖。

换算契约分两层且不可混用:

  • 逻辑尺寸(WPF 的 Width / FontSize)只乘 uiScale —— WPF 已按系统 DPI 把 DIP 换算成物理像素,再乘 DPI 就是重复缩放;
  • 只有位图像素请求才乘 uiScale × dpiScale。

实测(1920×1080 @150% DPI,折叠态标题条):

界面缩放 标题条高度 胶囊边长
80% 24 px 45 px
100% 30 px 56 px
130% 39 px 73 px

高清图标按像素档位生成

图标不再是固定尺寸画布,而是按「逻辑尺寸 × 界面缩放 × 系统 DPI」向上取 16 的倍数请求与解码,夹在 [48, 256] 之间:

ResolveIconPixelSize(54 DIP, 100%, 100% DPI) = 64 px
ResolveIconPixelSize(54 DIP, 100%, 150% DPI) = 96 px
ResolveIconPixelSize(54 DIP, 130%, 150% DPI) = 112 px
  • 解码缓存键包含像素档位,跨屏或改缩放后按新档位重建,旧档位自动淘汰;
  • 磁盘图标缓存加入档位前缀,不同档位互不覆盖;
  • 96 px 档位下的绘制参数与旧实现完全一致,升级无视觉回归。

小工作区布局

移除布局计算里虚构的 800 × 560 视口下限。高缩放或小屏下真实工作区可能只有 683 × 364(1366×768 @200%),被强行撑大后预设会算出越界坐标,再被各窗口钳制,表现为挤压与重叠。

实际工作区 旧视口 新视口
1920 × 1017 1920 × 1017 1920 × 1017
960 × 540 960 × 560 960 × 540
683 × 364 800 × 560 683 × 364

同时修复「右侧停靠」预设在窄视口下把最左列算成负 x 的问题(实测 683×364 / 8 分区时最左 x = −285,面板被推出屏幕左缘)。原生与前端两处同型实现均已加兜底。

文字可读性

  • 文件名标签默认字号 10 → 12 DIP,可调范围 [8, 14] → [8, 18];
  • 已保存的自定义字号原样保留,只在缺失时使用新默认值;
  • 设置页新增「清晰 / 标准 / 紧凑」三档预设,一键套用到当前选中分类。

窄标题条

分区宽度 < 200 DIP 时,标题条只保留 标题 + 折叠 + 菜单按钮;搜索、尺寸、视图、图钉四个按钮收起(悬停也不再挤出),对应操作改从右键菜单进入。

性能与内存

  • 后台图标解码增加进行中任务去重与 4 路并发上限;
  • 解码缓存逐出修正为真正降到 24 MB 低水位(此前只降到 32 MB 上限即停)。

验证

  • npm test:6 个测试文件 / 45 个用例全部通过(本次新增 9 个);
  • npm run build 与 scripts/build-windows.ps1(csc /langversion:5)均通过;
  • 实机测量覆盖界面缩放 80/100/130%、折叠态与胶囊态、150% 系统 DPI。

已知取舍

  • 跨屏拖拽导致 DPI 变化时,图标不会立即按新 DPI 重算(需等下次缩放变化或扫描);
  • ResizeMinWidth / ResizeMinHeight 与窄标题条的 200 DIP 阈值未随缩放变化。

安装包:PivKeyUBox-Setup-v0.1.1.exe(约 8 MB,免 UAC,安装到用户目录)