LazowskiAnton · Extensions

RulerSmith

Segure Ctrl+Shift sobre o aplicativo que você está depurando: o controle sob o ponteiro mostra seu tamanho, e setas suaves mostram as distâncias até os controles ao redor. Solte as teclas e tudo some.

Gratuito · Visual Studio 2022 e 2026 · 14 idiomas de interface · sem telemetria

Por que o RulerSmith

O mesmo formulário sem e com o RulerSmith: o contorno de um botão, seu tamanho e os espaçamentos até os vizinhos

Limites reais, não um palpite

Os tamanhos vêm da UI Automation — a árvore que os leitores de tela usam —, então sombras, gradientes e suavização de serrilhado não a enganam, como enganam uma régua de pixels.

As unidades que você escreve

WPF e páginas da Web usam unidades independentes de dispositivo: 76 × 32 é o que você coloca no XAML ou no CSS, e os pixels de tela (152 × 64 a 200 %) aparecem logo abaixo.

Só enquanto a tecla está pressionada

Nada é calculado nem desenhado até você segurar a tecla. A sobreposição nunca captura um clique nem o foco, e descansa enquanto o depurador está pausado.

Gratuito, sem pegadinhas

Sem assinatura, sem versão “pro”, sem coleta de dados, sem mensagens na janela Saída ou na inicialização. A única coisa que vamos pedir — depois que você a tiver usado por um tempo — é uma avaliação no Marketplace. Funciona no Visual Studio 2022 e 2026, x64 e ARM64.

Recursos

Medição

Inicie a depuração, segure Ctrl+Shift e mova o ponteiro sobre o aplicativo. Um novo controle ganha um contorno, seu tamanho aparece abaixo dele e os espaçamentos correm até os vizinhos; os números acompanham o ponteiro de controle em controle.

Um botão Save com contorno, seu tamanho e os espaçamentos até Cancel, a caixa de comentário e as bordas da janela
Na telaSignificado
Contorno finoOs limites do controle sob o ponteiro. Texto ou ícone dentro de um botão conta como o botão.
Button 76 × 32
152 × 64 px · 200 %
O tipo e o tamanho nas unidades do aplicativo; em um monitor com escala, os pixels de tela e a escala em uma segunda linha.
Seta contínuaO espaçamento até o controle mais próximo daquele lado. Controles encostados não mostram seta.
Seta tracejadaNenhum controle daquele lado: o espaçamento até a borda do contêiner (a área cliente de uma janela).

O painel do RulerSmith

Depurar → Painel do RulerSmith (também em Exibir → Outras Janelas). A barra de ferramentas liga e desliga a medição — o mesmo botão que Medir Layout na barra de ferramentas Depurar — e cada tipo de aplicativo separadamente: WPF, WinForms, Win32, Web. Abaixo dela, a última medição: o nome e o automation id do controle (com ele você encontra o controle no XAML), seu tamanho, sua posição na janela e cada espaçamento com o controle em que termina. A linha de status explica por que nada é desenhado: sem depuração, pausado em um ponto de interrupção ou medição desligada.

O painel do RulerSmith com o botão Save medido, seu tamanho e espaçamentos

Quais aplicativos

O RulerSmith lê os controles pela UI Automation, então mede o que o aplicativo expõe ali — e os controles padrão já fazem isso de fábrica.

AplicativoObservações
WPFAs unidades são independentes de dispositivo. A barra de ferramentas transparente do XAML que o Visual Studio sobrepõe a um aplicativo WPF depurado é ignorada; o conteúdo das guias é encontrado.
Windows FormsAs unidades são os pixels do aplicativo: 1:1 para um aplicativo com reconhecimento de DPI, esticados pelo Windows para um que não tem.
Win32, MFCJanelas criadas com CreateWindow e caixas de diálogo de recursos: botões, caixas de edição, caixas de combinação, listas, árvores.
Páginas da WebEdge, Chrome e Firefox durante a depuração — o Visual Studio muitas vezes abre um projeto Web no navegador que já está em execução. As unidades são pixels CSS. O botão Web no painel as desativa.

Sem suporte: WinUI, UWP e MAUI. Um controle personalizado que não cria um automation peer é invisível para a UI Automation, e o contêiner dele é medido no lugar.

Configurações

Ferramentas → Opções → SmithWorks → RulerSmith. Cada opção tem uma descrição.

OpçãoPadrão
Segure para medirCtrl+Shift
Medir durante a depuraçãoativado
Mostrar pixels de tela em monitores com escalaativado
Animar a entradaativado
Fazer as setas de espaçamento crescerem a partir do controleativado
Pedir uma avaliação no Marketplaceativado

As configurações ficam em %LocalAppData%\RulerSmith.

Página de opções do RulerSmith
A página de opções.

Perguntas frequentes

O RulerSmith envia algum dado?

Não. Tudo acontece no seu computador: um pequeno processo de sobreposição lê os controles pela UI Automation e desenha na tela. Nenhuma solicitação de rede, nenhuma telemetria.

Só a janela inteira (ou um painel grande) ganha contorno. Por quê?

O aplicativo não expõe os controles internos à UI Automation — geralmente são controles personalizados sem automation peer. Substituir OnCreateAutomationPeer nesse controle o torna mensurável, e também acessível a leitores de tela.

Nada é desenhado quando seguro a tecla.

Verifique se uma sessão de depuração está em execução e não pausada, e se a linha de status do painel diz Medindo. Um tipo de aplicativo pode estar desativado no painel. Outro programa pode usar as mesmas teclas: escolha outra combinação nas configurações.

Por que ele para em um ponto de interrupção?

Um aplicativo pausado não consegue responder à UI Automation. A sobreposição descansa até você continuar (F5).

WinUI, UWP ou MAUI serão suportados?

Por enquanto, não. Se você precisar deles, diga isso no repositório Feedback.

Posso medir um aplicativo sem o Visual Studio?

Sim: execute RulerSmith.Overlay.exe a partir da pasta da extensão. Ele fica na bandeja do sistema e mede qualquer janela enquanto a tecla está pressionada.

Onde relato um problema ou sugiro um recurso?

Abra um issue no repositório Feedback no GitHub — há formulários para bugs e ideias (troque os nomes privados). Você também pode usar a guia Q&A no Marketplace.

Histórico de alterações

1.0.2

1.0.1

1.0.0