LazowskiAnton · Extensions

RulerSmith

Mantenga Ctrl+Shift sobre la aplicación que está depurando: el control bajo el puntero muestra su tamaño y unas flechas suaves muestran las distancias a los controles que lo rodean. Suelte las teclas y todo desaparece.

Gratis · Visual Studio 2022 y 2026 · 14 idiomas de interfaz · sin telemetría

Por qué RulerSmith

El mismo formulario sin y con RulerSmith: el contorno de un botón, su tamaño y los espacios hasta sus vecinos

Límites reales, no una estimación

Los tamaños proceden de UI Automation, el árbol que usan los lectores de pantalla, así que las sombras, los degradados y el suavizado no lo engañan como engañan a una regla de píxeles.

Las unidades que usted escribe

WPF y las páginas web usan unidades independientes del dispositivo: 76 × 32 es lo que escribe en XAML o CSS, y los píxeles de pantalla (152 × 64 al 200 %) se muestran debajo.

Solo mientras mantiene la tecla

No se calcula ni se dibuja nada hasta que mantiene la tecla. La superposición nunca recibe un clic ni el foco, y descansa mientras el depurador está en pausa.

Gratis y sin letra pequeña

Sin suscripción, sin versión «pro», sin recopilación de datos, sin mensajes en la ventana Salida ni al iniciar. Lo único que le pediremos —cuando ya la haya usado durante un tiempo— es una valoración en el Marketplace. Funciona en Visual Studio 2022 y 2026, x64 y ARM64.

Características

Medición

Inicie la depuración, mantenga Ctrl+Shift y mueva el puntero sobre la aplicación. Un control nuevo se contornea, su tamaño aparece debajo y los espacios se extienden hasta los vecinos; los números siguen al puntero de control en control.

Un botón Save contorneado, con su tamaño y los espacios hasta Cancel, el cuadro de comentarios y los bordes de la ventana
En pantallaSignificado
Contorno finoLos límites del control bajo el puntero. El texto o el icono dentro de un botón cuentan como el botón.
Button 76 × 32
152 × 64 px · 200 %
El tipo y el tamaño en las unidades de la aplicación; en una pantalla escalada, los píxeles de pantalla y la escala en una segunda línea.
Flecha continuaEl espacio hasta el control más cercano en ese lado. Los controles que se tocan no muestran flecha.
Flecha discontinuaNo hay ningún control en ese lado: el espacio hasta el borde del contenedor (el área cliente de una ventana).

El panel de RulerSmith

Depurar → Panel de RulerSmith (también en Ver → Otras ventanas). La barra de herramientas activa y desactiva la medición (el mismo interruptor que Medir diseño en la barra de herramientas Depurar) y cada tipo de aplicación por separado: WPF, WinForms, Win32, Web. Debajo, la última medición: el nombre y el automation id del control (con él lo encuentra en XAML), su tamaño, su posición en la ventana y cada espacio con el control en el que termina. La línea de estado indica por qué no se dibuja nada: sin depurar, en pausa en un punto de interrupción o medición desactivada.

El panel de RulerSmith con el botón Save medido, su tamaño y sus espacios

Qué aplicaciones

RulerSmith lee los controles a través de UI Automation, así que mide lo que la aplicación expone ahí, que es lo que los controles estándar hacen de serie.

AplicaciónNotas
WPFLas unidades son independientes del dispositivo. Se omite la barra de herramientas XAML transparente que Visual Studio superpone a una aplicación WPF depurada; el contenido de las pestañas se encuentra.
Windows FormsLas unidades son los píxeles de la aplicación: 1:1 en una aplicación compatible con PPP, estirados por Windows en una que no lo es.
Win32, MFCVentanas creadas con CreateWindow y cuadros de diálogo de recursos: botones, cuadros de texto, cuadros combinados, listas, árboles.
Páginas webEdge, Chrome y Firefox durante la depuración: Visual Studio suele abrir un proyecto web en el explorador que ya está en ejecución. Las unidades son píxeles CSS. El interruptor Web del panel las desactiva.

No compatibles: WinUI, UWP y MAUI. Un control personalizado que no crea un automation peer es invisible para UI Automation, y en su lugar se mide su contenedor.

Configuración

Herramientas → Opciones → SmithWorks → RulerSmith. Cada opción tiene una descripción.

OpciónPredeterminado
Mantener para medirCtrl+Shift
Medir durante la depuraciónactivado
Mostrar píxeles de pantalla en pantallas escaladasactivado
Animar la apariciónactivado
Hacer crecer las flechas de espacio desde el controlactivado
Pedir una valoración en el Marketplaceactivado

La configuración se guarda en %LocalAppData%\RulerSmith.

Página de opciones de RulerSmith
La página de opciones.

Preguntas frecuentes

¿Envía RulerSmith algún dato?

No. Todo ocurre en su equipo: un pequeño proceso de superposición lee los controles a través de UI Automation y dibuja en la pantalla. Sin solicitudes de red, sin telemetría.

Solo se contornea la ventana entera (o un panel grande). ¿Por qué?

La aplicación no expone a UI Automation los controles que contiene; normalmente son controles personalizados sin automation peer. Si invalida OnCreateAutomationPeer en ese control, se podrá medir y también será accesible para los lectores de pantalla.

No se dibuja nada al mantener la tecla.

Compruebe que hay una sesión de depuración en ejecución y no en pausa, y que la línea de estado del panel dice Midiendo. Puede que un tipo de aplicación esté desactivado en el panel. Otro programa puede usar las mismas teclas: elija otra combinación en la configuración.

¿Por qué se detiene en un punto de interrupción?

Una aplicación en pausa no puede responder a UI Automation. La superposición descansa hasta que continúa (F5).

¿Serán compatibles WinUI, UWP o MAUI?

Por ahora no. Si los necesita, dígalo en el repositorio Feedback.

¿Puedo medir una aplicación sin Visual Studio?

Sí: ejecute RulerSmith.Overlay.exe desde la carpeta de la extensión. Se queda en el área de notificación y mide cualquier ventana mientras mantiene la tecla.

¿Dónde informo de un problema o sugiero una función?

Abra una incidencia en el repositorio Feedback de GitHub: hay formularios para errores e ideas (cambie los nombres privados). También puede usar la pestaña Q&A en Marketplace.

Historial de cambios

1.0.2

1.0.1

1.0.0