LazowskiAnton · Extensions

RulerSmith

Удерживайте Ctrl+Shift над приложением, которое вы отлаживаете: элемент под указателем покажет свой размер, а мягкие стрелки — расстояния до элементов вокруг него. Отпустите клавиши — и всё исчезнет.

Бесплатно · Visual Studio 2022 и 2026 · 14 языков интерфейса · без телеметрии

Зачем RulerSmith

Одна и та же форма без RulerSmith и с ним: контур кнопки, её размер и отступы до соседей

Настоящие границы, а не догадка

Размеры берутся из UI Automation — того же дерева, которым пользуются средства чтения с экрана, — поэтому тени, градиенты и сглаживание его не обманут, как обманывают пиксельную линейку.

Те единицы, которые вы пишете

WPF и веб-страницы размечаются в аппаратно-независимых единицах: 76 × 32 — это то, что вы пишете в XAML или CSS, а экранные пиксели (152 × 64 при 200 %) показаны под ним.

Только пока клавиша удерживается

Пока вы не удерживаете клавишу, ничего не вычисляется и не рисуется. Наложение никогда не перехватывает щелчки и фокус и отдыхает, пока отладчик приостановлен.

Бесплатно и без подвохов

Без подписок, без «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. Ниже — последнее измерение: имя элемента и его automation id (по нему элемент находится в XAML), размер, положение в окне и каждый отступ с элементом, у которого он заканчивается. Строка состояния объясняет, почему ничего не рисуется: отладка не запущена, остановка в точке останова или измерение выключено.

Панель RulerSmith с измеренной кнопкой Save, её размером и отступами

Какие приложения

RulerSmith читает элементы через UI Automation, поэтому измеряет то, что приложение там предоставляет, — а стандартные элементы управления делают это сразу.

ПриложениеПримечания
WPFЕдиницы аппаратно-независимые. Прозрачная панель инструментов XAML, которую Visual Studio накладывает на отлаживаемое WPF-приложение, пропускается; содержимое вкладок находится.
Windows FormsЕдиницы — пиксели приложения: 1:1 для приложения с поддержкой DPI, растянутые Windows для приложения без неё.
Win32, MFCОкна, созданные через CreateWindow, и диалоги из ресурсов: кнопки, поля ввода, поля со списком, списки, деревья.
Веб-страницыEdge, Chrome и Firefox во время отладки — Visual Studio часто открывает веб-проект в уже запущенном браузере. Единицы — CSS-пиксели. Переключатель Web на панели их отключает.

Не поддерживаются: WinUI, UWP и MAUI. Пользовательский элемент, который не создаёт automation peer, невидим для UI Automation — вместо него измеряется его контейнер.

Настройки

Средства → Параметры → SmithWorks → RulerSmith. У каждого параметра есть описание.

ПараметрПо умолчанию
Удерживать для измеренияCtrl+Shift
Измерять во время отладкивкл.
Показывать экранные пиксели на масштабированных экранахвкл.
Анимировать появлениевкл.
Стрелки отступов вырастают из элементавкл.
Попросить оценку в Marketplaceвкл.

Настройки хранятся в %LocalAppData%\RulerSmith.

Страница параметров RulerSmith
Страница параметров.

Вопросы и ответы

Отправляет ли RulerSmith какие-либо данные?

Нет. Всё происходит на вашем компьютере: небольшой процесс наложения читает элементы через UI Automation и рисует на экране. Никаких сетевых запросов, никакой телеметрии.

Обводится только всё окно (или большая панель). Почему?

Приложение не предоставляет UI Automation элементы внутри него — обычно это пользовательские элементы без automation peer. Переопределите в таком элементе OnCreateAutomationPeer — и его можно будет измерить, а заодно он станет доступен средствам чтения с экрана.

При удержании клавиши ничего не рисуется.

Проверьте, что сеанс отладки запущен и не приостановлен, а в строке состояния панели написано Измерение. Возможно, тип приложения выключен на панели. Те же клавиши может использовать другая программа: выберите другое сочетание в настройках.

Почему в точке останова всё останавливается?

Приостановленное приложение не может отвечать UI Automation. Наложение отдыхает, пока вы не продолжите выполнение (F5).

Будут ли поддерживаться WinUI, UWP или MAUI?

Пока нет. Если они вам нужны, напишите об этом в репозитории Feedback.

Можно ли измерять приложение без Visual Studio?

Да: запустите RulerSmith.Overlay.exe из папки расширения. Он живёт в области уведомлений и измеряет любое окно, пока удерживается клавиша.

Где сообщить о проблеме или предложить идею?

Создайте issue в репозитории Feedback на GitHub — там есть формы для ошибок и идей (конфиденциальные имена лучше изменить). Также можно воспользоваться вкладкой Q&A на Marketplace.

История изменений

1.0.2

1.0.1

1.0.0