DPI 与缩放¶
MarkupHtmlElement 根据 UI Toolkit 内容区域、面板像素密度及元素变换更新页面的物理绘制分辨率。
视口尺寸计算¶
MarkupHtmlElement 的布局宽高使用 UI Toolkit 逻辑点。插件从 contentRect 取得内容尺寸,并结合面板的 scaledPixelsPerPoint 与元素累计变换计算绘制密度:
有效缩放 = 面板像素密度 × max(水平轴缩放, 垂直轴缩放)
物理尺寸 = round(内容区域逻辑尺寸 × 有效缩放)
元素或父级缩放会通过累计变换影响绘制密度。非均匀缩放时,插件采用较大轴的缩放值,以避免任一显示方向的采样密度不足;此时纹理尺寸不能直接按两个轴分别相乘理解。
插件在挂载、布局变化和持续的视口检查中更新尺寸及密度,因此显示器 DPI 变化也会触发重新检查,不只依赖元素宽高变化。
手动创建离屏视口¶
直接使用 MarkupUIViewPort 时,宽高参数表示物理像素,需同时提供相匹配的 deviceScale。例如,800 × 600 的逻辑区域在比例 2 下对应 1600 × 1200 的物理视口。使用 MarkupHtmlElement 时由宿主自动处理这项换算。
页面呈现与像素对齐¶
页面纹理根据当前面板密度和元素变换放置,不再重复应用生成帧时的缩放。正向轴对齐、未旋转和未斜切时,插件补偿页面原点到最近的物理像素位置;显式旋转和斜切仍保留。
视口改变而新帧尚未发布时,旧画面按当前坐标换算放置并裁剪,不强制拉伸到新控件尺寸。
检查显示结果¶
- 确认宿主控件的实际逻辑尺寸与有效缩放。
- 使用
100 × 100px色块及固定字号文字,比较不同缩放下的显示结果。 - 调整窗口尺寸,检查换行、滚动和裁剪。
- 排除 CSS 或父级额外缩放,检查页面最终位置与图片源分辨率。
相关说明:公共 DPI 与缩放、布局与尺寸。