LazowskiAnton · Extensions

RulerSmith

在正在调试的应用上按住 Ctrl+Shift:指针下的控件会显示其大小,柔和的箭头显示与周围控件的距离。松开按键,一切随即消失。

免费 · Visual Studio 2022 和 2026 · 14 种界面语言 · 无遥测

为什么选择 RulerSmith

同一个窗体在没有和有 RulerSmith 时的对比:按钮的轮廓、大小以及与相邻控件的间距

真实的边界,而非猜测

大小来自 UI Automation(屏幕阅读器使用的同一棵树),因此阴影、渐变和抗锯齿不会像骗过像素标尺那样骗过它。

你所写的单位

WPF 和网页以与设备无关的单位布局:76 × 32 就是你在 XAML 或 CSS 中写的值,屏幕像素(200 % 下为 152 × 64)显示在其下方。

只在按住按键时工作

在你按住按键之前,不进行任何计算或绘制。覆盖层从不接收单击或焦点,调试器暂停时它也会停下。

免费,没有附加条件

没有订阅、没有“Pro”版、不收集数据,也不会在“输出”窗口或启动时显示消息。我们唯一的请求是:在你用过一段时间之后,到 Marketplace 给个评分。支持 Visual Studio 2022 和 2026,x64 和 ARM64。

功能

测量

开始调试,按住 Ctrl+Shift,将指针移到应用上。新的控件会显示轮廓,其下方显示大小,间距箭头延伸到相邻控件;数字随指针从一个控件移到另一个控件。

显示轮廓的 Save 按钮,以及其大小和到 Cancel、注释框和窗口边缘的间距
屏幕上显示含义
细轮廓指针下控件的边界。按钮内的文本或图标算作按钮本身。
Button 76 × 32
152 × 64 px · 200 %
类型和以应用单位表示的大小;在缩放的显示器上,第二行显示屏幕像素和缩放比例。
实线箭头到该侧最近控件的间距。相互接触的控件不显示箭头。
虚线箭头该侧没有控件:到容器边缘(窗口的工作区)的间距。

RulerSmith 面板

调试 → RulerSmith 面板(也位于 视图 → 其他窗口)。工具栏可打开和关闭测量——与“调试”工具栏上的 测量布局 是同一个开关——也可以分别控制每类应用:WPF、WinForms、Win32、Web。下方是最近一次测量:控件的名称和自动化 ID(可据此在 XAML 中找到该控件)、大小、在窗口中的位置,以及每个间距和它终止于的控件。状态行说明为什么没有绘制任何内容:未在调试、在断点处暂停,或测量已关闭。

RulerSmith 面板,显示已测量的 Save 按钮及其大小和间距

支持哪些应用

RulerSmith 通过 UI Automation 读取控件,因此它测量的是应用在其中公开的内容——标准控件默认就会公开。

应用说明
WPF单位与设备无关。Visual Studio 覆盖在被调试 WPF 应用上的半透明 XAML 工具栏会被跳过;选项卡中的内容可以找到。
Windows Forms单位是应用的像素:支持 DPI 感知的应用为 1:1,不支持的应用由 Windows 拉伸。
Win32, MFC使用 CreateWindow 创建的窗口和来自资源的对话框:按钮、编辑框、组合框、列表、树。
网页调试时的 Edge、Chrome 和 Firefox——Visual Studio 经常在已运行的浏览器中打开 Web 项目。单位是 CSS 像素。面板中的 Web 开关可将其关闭。

不支持:WinUI、UWP 和 MAUI。不创建自动化对等体的自定义控件对 UI Automation 不可见,此时测量的是它的容器。

设置

工具 → 选项 → SmithWorks → RulerSmith。每个选项都有说明。

选项默认值
按住以测量Ctrl+Shift
调试时测量开
在缩放的显示器上显示屏幕像素开
出现时使用动画开
间距箭头从控件向外延伸开
请求在 Marketplace 上评分开

设置保存在 %LocalAppData%\RulerSmith 中。

RulerSmith 选项页
选项页。

常见问题

RulerSmith 会发送数据吗?

不会。一切都在你的计算机上进行:一个小型覆盖层进程通过 UI Automation 读取控件并在屏幕上绘制。没有网络请求,没有遥测。

为什么只有整个窗口(或一个大面板)显示轮廓?

应用没有向 UI Automation 公开其中的控件——通常是没有自动化对等体的自定义控件。在这类控件中重写 OnCreateAutomationPeer 即可使其可测量,同时也让屏幕阅读器可以访问。

按住按键时什么都没有绘制。

请检查调试会话是否正在运行且未暂停,以及面板的状态行是否显示 正在测量。某类应用可能已在面板中关闭。其他程序可能使用了相同的按键:请在设置中选择其他组合键。

为什么在断点处会停止?

暂停的应用无法响应 UI Automation。覆盖层会停下,直到你继续(F5)。

将来会支持 WinUI、UWP 或 MAUI 吗?

暂时不会。如果你需要,请在 Feedback 仓库中告诉我们。

可以在没有 Visual Studio 的情况下测量应用吗?

可以:运行扩展文件夹中的 RulerSmith.Overlay.exe。它驻留在通知区域,在按住按键时测量任何窗口。

在哪里报告问题或提出功能建议?

请在 GitHub 上的 Feedback 仓库中提交 issue——那里有用于报告错误和提出建议的表单(如有私密名称,请先替换)。也可以使用 Marketplace 上的 Q&A 选项卡。

更新日志

1.0.2

1.0.1

1.0.0