现象与根因
开发显示器多是 1920×1080,而工控触屏常见 1024×768、1280×1024 甚至更小。界面“显示不全”通常来自三个根因:
- 写死固定尺寸和绝对坐标:控件用固定像素、绝对定位,屏幕变小后超出可视区
- 窗口固定大小且不可缩放,又没出现滚动条
- 字体/DPI 缩放:工控屏系统缩放比例不同,导致布局错位
修复原则:用流式布局代替绝对定位
以 WPF 为例:
- 顶层用 Grid 的行列定义(
*比例分配)而非固定 Canvas 坐标 - 多用 DockPanel/StackPanel/WrapPanel 让控件随容器流动
- 容器加
ScrollViewer,空间不足时可滚动,而不是直接被裁掉 - 设最小窗口尺寸(MinWidth/MinHeight),低于此时出现滚动
字体与 DPI
- 用相对字号,配合 Viewbox 或布局缩放适配不同 DPI
- 在目标工控屏的真实分辨率和缩放比例下测试,而不是只在开发机看
- 现场强光、戴手套操作,按钮要足够大、间距足够,别只追求紧凑
Web HMI 的适配思路
如果是 Web 技术,用响应式布局:
- 弹性盒/网格布局,避免固定 px 宽度
- 媒体查询适配横竖屏
- 关键操作按钮满足触屏最小点击尺寸
一个可复用的验证方法
在开发机上直接把窗口拖到目标分辨率大小,或用系统分辨率模拟,提前发现溢出;建立几个标准分辨率(1024×768、1280×1024、1920×1080)作为每次发版前的必测项。
落地清单
- 清理所有绝对定位和写死像素,改为比例/流式布局
- 主容器加滚动兜底
- 统一字号和 DPI 策略
- 在真实工控屏上做最终验收
- 把目标分辨率写进需求,从设计阶段就按最小屏幕做
界面适配的本质是“让内容适应容器”,布局思路从“摆坐标”换成“定规则”,换任何屏幕都不会再显示不全。